我正在用 nodejs 开发我的项目。我发现如果我需要编码和测试 api,我会运行两个控制台,一个是执行 typescript watch,另一个是执行服务器。
我觉得好麻烦。我发现 github 上的其他开发人员已经在
package.json
中编写了脚本。很容易调用任何命令。它吸引了如何编写脚本和简化我的开发工作流程。
简而言之,typescript watch的命令是
tsc -w
,运行服务器的命令是node app.js
。我的想法是将命令合并为tsc -w & node app.js
,但我不能同时使用这两个命令。我该怎么做?谢谢。
安装
concurrently
,使用npm
、pnpm
或yarn
pnpm i concurrently -D
使用此命令创建脚本
"scripts": {
"run": "tsc && concurrently \"tsc -w\" \"nodemon dist/app.js\"",
}
无需安装任何东西(mac 或 Linux)
"scripts": {
"run": "tsc -w & nodemon dist/app.js",
}
首先运行 tsc 以便您的目录在运行 node 时有一些东西
有了它,您将运行您的 Typescript 应用程序 🚀
我的想法是将命令合并为 tsc -w & node app.js 但我不能同时使用这两个命令。我该怎么做
你有几个选择。最简单的是使用
ts-node-dev
:https://github.com/whitecolor/ts-node-dev
另一个选择是使用 nodemon:
tsc -w & nodemon app.js
自 Typescript 3.4 以来,编译速度更快,因为您可以使用
incremental
编译器选项,并且它们不断改进(包括 3.8 中大型项目的有趣更改)。
更新:
我也开始同时使用HerberthObregon在他的回答中说
TLDR,如果你喜欢 nodemon,这是获取文件监视、编译和执行的直接方法:
nodemon --ext ts --exec 'tsc && node dist/index.js'
可选择将 tsc 替换为 babel 以加快编译速度。
这里有一个更完整的示例,在 package.json(带有源映射)中:
"scripts": {
"develop": "nodemon --ext ts --exec 'yarn build --incremental && yarn serve'",
"build": "tsc",
"serve": "node --require source-map-support/register dist/index.js",
...
},
如果需要,安装source-map-support作为依赖项,咳咳……源地图支持!否则,从上面的
--require source-map-support/register
脚本中删除serve
。
tsconfig.json
{
"compilerOptions": {
...
"sourceMap": true,
"outDir": "dist",
}
}
基于 herberthObregon 的回答
npm install concurrently typescript nodemon --save-dev
"scripts": {
"build": "tsc",
"build:watch": "tsc -w",
"dev": "npm run build && concurrently \"npm run build:watch\" \"npm run serve:watch\"",
"serve": "node dist/index.js",
"serve:watch": "nodemon dist/index.js"
},
只是想把我的帽子扔在这里,这是一个使用
ts-node-dev
和concurrently
的解决方案,类似于@HerberthObregon提供的解决方案,但使用ts-node-dev
而不是nodemon
:
"scripts": {
"start": "npm run build && concurrently \"npm run build:watch\" \"npm run dev\"",
"dev": "tsnd --respawn src/main.ts",
"build": "tsc -p tsconfig.release.json",
"build:watch": "tsc -w -p tsconfig.release.json"
}
奖励:如果您需要帮助来弄清楚
tsc
和您的tsconfig.json
,我使用这个node typescript starter的合理默认值。
这是一个适合我的解决方案
1。安装 ts-node 和 nodemon 作为开发依赖
2。创建脚本:
"dev" : "nodemon app.ts"