无法让 TypeScript 监视我的项目并重新加载它



命令tsc -w -p server观察server目录将 TypeScript 编译到dist/server文件夹中(dist/server/app.js是主节点脚本(。

Commandnodemon -w dist/server dist/server/app.js监视文件夹dist/server并在发生更改时重新加载dist/server/app.js

问题是:如果我并行运行这两个命令tsc需要一些时间,但nodemon开始得太快,当dist/server/app.js尚不存在时。

concurrently "tsc -w -p server" "nodemon -w dist/server dist/server/app.js"

另一方面,如果我按顺序运行命令,我会丢失nodemon输出(即服务器输出(,因为tsc会监视更改并"窃取"控制台输出:

tsc -w -p server && nodemon -w dist/server dist/server/app.js

我已经用nodemon和npm-run-all测试了这两种策略,这是一种流行的替代方案。

相关问题(接受的答案不能解决问题(:

  • 有没有办法使用 npm 脚本来运行 tsc -watch && nodemon --watch?

添加1000 毫秒的延迟以nodemon为我解决了这个问题。

https://github.com/remy/nodemon#delaying-restarting

Nodemon.json

{
"watch": ["build"],
"ext": "js",
"exec": "npm start",
"delay": 1000
}

包.json

{
"name": "demo",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node build/index.js",
"ts": "tsc -w",
"nodemon": "nodemon",
"code": "concurrently -n ts,nodemon npm:ts npm:nodemon"
},
"devDependencies": {
"concurrently": "^4.1.0",
"nodemon": "^1.18.9",
"typescript": "^3.2.2"
}
}

tsconfig.json

{
"compilerOptions": {
"module": "commonjs",
"esModuleInterop": true,
"target": "es2017",
"noImplicitAny": true,
"moduleResolution": "node",
"sourceMap": true,
"outDir": "build",
"baseUrl": ".",
"paths": {
"*": [
"node_modules/*",
"src/types/*"
]
}
},
"include": [
"src/**/*"
]
}

npm run code

最新更新