无法让TypeScript监视我的项目并让nodemon重新加载它
无法让TypeScript监视我的项目并让nodemon重新加载它
命令tsc -w -p server
会监视server
目录,并将TypeScript编译为dist/server
文件夹(其中dist/server/app.js
是主要的Node脚本)。
命令nodemon -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这两种常见方法测试了这两种策略。
相关问题(已验收的答案未解决问题):
问题出现的原因是没有正确配置nodemon来监视项目并重新加载。解决方法是在nodemon.json文件中添加一个延迟参数(delay)来延迟重新加载的时间。
具体的解决方法如下:
1. 在项目根目录下创建一个名为nodemon.json的文件。
2. 在nodemon.json文件中添加以下内容:
{
"watch": ["build"],
"ext": "js",
"exec": "npm start",
"delay": 1000
}
3. 在package.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"
}
}
4. 在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/**/*"
]
}
5. 运行命令`npm run code`。