我正在尝试用TypeScript和Angular应用程序运行一个开发服务器,而不是每次都转译ts文件。
我发现我可以用ts-node运行.ts文件,但我也想观看.ts文件并重新加载我的应用程序/服务器。这方面的一个例子是命令gulp watch。
我正在尝试用TypeScript和Angular应用程序运行一个开发服务器,而不是每次都转译ts文件。
我发现我可以用ts-node运行.ts文件,但我也想观看.ts文件并重新加载我的应用程序/服务器。这方面的一个例子是命令gulp watch。
当前回答
我做过
"start": "nodemon --watch 'src/**/*.ts' --ignore 'src/**/*.spec.ts' --exec ts-node src/index.ts"
纱线开始。ts节点不像' Ts-node '
其他回答
特别针对这个问题,我创建了tsc-watch库。你可以在npm上找到它。
显而易见的用例是:
tsc-watch服务器。ts——outDir ./dist——onSuccess "node ./dist/server.js"
你现在可以简单地用npm install——save-dev ts-node nodemon,然后用.ts文件运行nodemon,它就可以工作了:
nodemon app.ts
以前的版本:
我在开发环境中也遇到了同样的问题,直到我注意到没有一个demon的API允许我们为了执行自定义命令而改变它的默认行为。
例如,对于nodemon的最新版本:
nodemon --watch "src/**" --ext "ts,json" --ignore "src/**/*.spec.ts" --exec "ts-node src/index.ts"
或者创造一个无恶魔。Json文件,内容如下:
{
"watch": ["src"],
"ext": "ts,json",
"ignore": ["src/**/*.spec.ts"],
"exec": "ts-node ./src/index.ts" // or "npx ts-node src/index.ts"
}
然后无参数地运行。
通过这样做,您将能够实时重新加载ts-node进程,而不必担心底层实现。
更古老的nodemon版本:
nodemon --watch 'src/**/*.ts' --ignore 'src/**/*.spec.ts' --exec 'ts-node' src/index.ts
或者更好:将nodemon的配置外部化为一个nodemon。json文件,包含以下内容,然后运行nodemon,正如Sandokan建议的那样:
{
"watch": ["src/**/*.ts"],
"ignore": ["src/**/*.spec.ts"],
"exec": "ts-node ./index.ts"
}
我做过
"start": "nodemon --watch 'src/**/*.ts' --ignore 'src/**/*.spec.ts' --exec ts-node src/index.ts"
纱线开始。ts节点不像' Ts-node '
这里有一个替代HeberLZ的答案,使用npm脚本。
我的package.json:
"scripts": {
"watch": "nodemon -e ts -w ./src -x npm run watch:serve",
"watch:serve": "ts-node --inspect src/index.ts"
},
-e标志设置要查找的扩展, -w设置监视目录, -x执行脚本。
watch:serve脚本中的——inspect实际上是一个node.js标志,它只是打开调试协议。
我宁愿不使用ts-node,总是从dist文件夹运行。 要做到这一点,只需设置您的包。Json默认配置:
....
"main": "dist/server.js",
"scripts": {
"build": "tsc",
"prestart": "npm run build",
"start": "node .",
"dev": "nodemon"
},
....
然后不加恶魔。Json配置文件:
{
"watch": ["src"],
"ext": "ts",
"ignore": ["src/**/*.spec.ts"],
"exec": "npm restart"
}
这里,我使用"exec": "npm restart" 所以所有ts文件将重新编译为js文件,然后重新启动服务器。
要在开发环境中运行,
npm run dev
使用这个设置,我将始终从分布式文件运行,而不需要ts-node。