我正在尝试用TypeScript和Angular应用程序运行一个开发服务器,而不是每次都转译ts文件。
我发现我可以用ts-node运行.ts文件,但我也想观看.ts文件并重新加载我的应用程序/服务器。这方面的一个例子是命令gulp watch。
我正在尝试用TypeScript和Angular应用程序运行一个开发服务器,而不是每次都转译ts文件。
我发现我可以用ts-node运行.ts文件,但我也想观看.ts文件并重新加载我的应用程序/服务器。这方面的一个例子是命令gulp watch。
当前回答
从其他答案中总结选项
Nodemon + ts-node非常稳定,但需要显式配置,并且有点慢 Node-dev + ts-node需要的配置比nodemon少得多,但仍然很慢 Ts-node-dev速度很快,但不可靠
注意tsx(在底层使用ESBuild)和swc不做类型检查;这应该是可以接受的,因为大多数编辑器都内置了类型检查,并且类型检查仍然应该是构建过程的一部分。您还可以在测试的同时单独执行类型检查,或者通过tsc——noEmit作为预推送钩子。
(推荐)tsx
TL;DR:最小配置的最快速度
截至2023-02-01,tsx似乎是速度和最小配置的最佳组合:
安装tsx NPM install——save-dev TSX 更新您的包。json。 “脚本:{ "dev": "tsx watch src/index.ts", 运行它 运行开发 (如果您只想全局安装tsx并直接运行,请调整这些步骤)
方案1:nodemon/node-dev + ts-node + swc
TL;DR:与tsx一样快,但具有更多配置
将nodemon/node-dev的可靠性与ts-node-dev的速度相结合的另一种选择是使用ts-node和swc, swc是Rust中实现的与TypeScript兼容的转译器,比TypeScript转译器“快一个数量级”。
安装nodemon或node-dev(你喜欢哪个) nodemon NPM install——save-dev nodemon node-dev NPM install——save-dev node-dev 使用swc集成设置ts-node https://github.com/TypeStrong/ts-node#swc-1 安装必要的软件包 NPM install——save-dev ts-node @swc/core @swc/helpers regenerator-runtime 将此添加到tsconfig.json " ts-node ": { “swc”:真的 } 运行nodemon或node-dev,例如 Nodemon——查看SRC SRC /index.ts 或者: node-dev src / index.ts
方案2:nodemon/node-dev + ts-node transpileOnly
TL;DR:快速、可靠
这里有一个替代方案,它比前一个选项要慢,因为它使用了标准的TypeScript转译器,但在我的测试中,它仍然比nodemon/node-dev + ts-node快。
基本上,它与前面的选项相同,但没有swc。通过禁用类型检查,它比开箱即用的ts-node更快(关于为什么这应该是可接受的,请参阅上面的说明)。
如上所述安装nodemon/node-dev 安装ts-node NPM install——save-dev ts-node 修改您的tsconfig。为ts-node启用transpileOnly " ts-node ": { “transpileOnly”:真的 } 如上所述调用nodemon/node-dev
方案3:nodemon + tsc—增量
TL;DR:快速,可靠,类型检查,更挑剔
这几乎与前一种选择的速度相同。与其他选项相比,这个选项的唯一真正优势是它可以进行类型检查。
在缺点方面,它可能会更挑剔;在我的测试中,我使用dotenv来获取我的.env文件进行本地开发。但这取决于tsc构建在tsconfig中的配置方式。Json,你可能需要做一些杂耍才能让它工作。
但有选择是件好事,所以就是这样:
Install nodemon as above (It's possible that this may work with node-dev as well, but I didn't see an exec option for node-dev) Configure tsconfig.json to transpile your TypeScript to JavaScript In particular, noEmit should not be set to true Configure nodemon to run the TypeScript compiler to do an incremental transpilation any time a TypeScript file is changed, e.g. "dev": "nodemon -e ts --watch src .env --exec \"tsc --incremental && node src/index.js\"", You can even remove --incremental to further simplify it, but it will end up being much slower, comparable to nodemon/node-dev + ts-node.
其他回答
这对我来说很管用:
nodemon src/index.ts
显然,由于这个拉请求:https://github.com/remy/nodemon/pull/1552
我做过
"start": "nodemon --watch 'src/**/*.ts' --ignore 'src/**/*.spec.ts' --exec ts-node src/index.ts"
纱线开始。ts节点不像' Ts-node '
只需更新这3个包
nodemon, ts-node, typescript
yarn global add nodemon ts-node typescript
or
npm install -g nodemon ts-node typescript
现在你可以运行这个,问题解决了
nodemon <filename>.ts
你可以使用ts-node-dev
当任何必需的文件发生变化时,它重新启动目标节点进程(作为标准的node-dev),但在重新启动之间共享Typescript编译过程。
安装
yarn add ts-node-dev --dev
还有你的包裹。Json可以是这样的
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"tsc": "tsc",
"dev": "ts-node-dev --respawn --transpileOnly ./src/index.ts",
"prod": "tsc && node ./build/index.js"
}
添加"watch": "nodemon——exec ts-node——./src/index. "到你的package.json的脚本部分。