使用 Typescript 编译运行 Nodemon?
Posted
技术标签:
【中文标题】使用 Typescript 编译运行 Nodemon?【英文标题】:Run Nodemon with Typescript compiling? 【发布时间】:2020-01-19 18:21:34 【问题描述】:我希望在使用命令tsc
保存的每个文件上编译我的打字稿文件。
如何将 tsc 命令与 nodemon 在build:live
脚本中运行的命令结合起来
"scripts":
"start": "npm run build:live",
"build:live": "nodemon --watch '*.ts' --exec 'ts-node' app.ts",
这个脚本导致 nodemon 调用自己两次或三次:
"build:live": "nodemon --watch '*.ts' --exec 'ts-node app.ts & tsc'",
【问题讨论】:
【参考方案1】:这看起来会实现你想要的:
"start": "tsc-watch --project . --outDir ./dist --onSuccess \"nodemon ./dist/bin/www.js\""
来源:https://github.com/Microsoft/TypeScript/issues/12996#issuecomment-349277673
【讨论】:
这解决了我的确切问题。我希望 TS 进行转译,确保转译成功,然后在 dist.xml 中运行特定文件。谢谢!【参考方案2】:Nodemon 现在将自动检测并运行带有ts-node
的.ts
文件。它实际上会使用 python 和 ruby 运行 .py
和 .rb
文件,顺便说一句,你可以给它一个自定义的 --exec
给其他人。这是 nodemon 中的link to the relevant code。
所以以下应该没问题:
"scripts":
"dev": "nodemon app.ts"
【讨论】:
【参考方案3】:从 TypeScript 3.8+ 开始,您现在可以使用:
tsc --watch
https://www.typescriptlang.org/docs/handbook/configuring-watch.html
然后您可以在编译后的代码上使用nodemon
,例如nodemon dist/app.js
.
【讨论】:
这是正确答案!谢谢。【参考方案4】:根据当前答案,您可能会在使用 ES 模块时遇到问题。
使用tsc-watch
时不需要nodemon。它利用增量编译,使您的应用程序的重启速度更快。
我发现以下方法效果最好:
"start": "tsc-watch --onSuccess \"node ./dist/app.js\""
outDir
可以在您的tsconfig
中定义
【讨论】:
【参考方案5】:您可以在项目根目录中创建一个 nodemon.json 并在其中添加以下代码:
"ext": "*.ts",
"exec": "tsc && ts-node app.ts"
并更新您的脚本,如下所示:
"scripts":
"start": "npm run build:live",
"build:live": "nodemon",
发生的情况是,nodemon 将检查所有扩展名为“.ts”的文件并启动 tsc,然后启动 ts-node。
【讨论】:
以上是关于使用 Typescript 编译运行 Nodemon?的主要内容,如果未能解决你的问题,请参考以下文章
自动编译 TypeScript 源代码并复制静态(模板)文件
尝试(和失败)在 VSC 终端中使用 tsc 在 Visual Studio Code 中运行(成功安装)TypeScript 编译器