自动编译 TypeScript 源代码并复制静态(模板)文件
Automatically compile TypeScript sources and copy static (template)files
在调试快速服务器时,我的 'build & run' 过程包括 3 个步骤:
- 使用
tsc
编译 TypeScript 源代码
- 将图像和模板等静态文件复制到
dist/
- 运行编译后的
server.js
文件
这些步骤中的每一个都可以使用 监视模式 自动执行,但我正在努力将这三个步骤结合在一起。
我设法通过使用 tsc-watch to watch the TypeScript sources, cpx to copy the static files and finally nodemon 重新启动服务器来让它工作。
这种方法 有效 但有几个问题:
cpx
只监视开始时存在的文件(我觉得tsc-watch
也是这样有时,有点奇怪)
- 这种方法需要在 3 个单独的终端中使用 3 个命令,这很不方便
cpx
和 tsc-watch
都没有正确处理 Ctrl+C
退出,导致各种问题
我 other questions 与此主题相关,但其中 none 解决了上述问题(尽管他们确实告诉了我有关 cpx 和 tsc-watch 的信息)。
我不想使用 concurrently,因为它会导致计时问题,并且它会混合来自不同进程的控制台输出(最显着的是 tsc-watch
和实际服务器)。
使用 tsc-watch
和 --onSuccess
来复制静态文件是不够的,因为模板文件中的更改不会被拾取。这可以通过更改源文件中的注释来解决,但这会触发完全重新编译(重新启动服务器)。
使用 webpack's watch mode 也是不够的,因为它不会获取新文件并进一步污染控制台输出。
是否有任何我可能错过的解决方案?我应该只写一个自动打开 3 个所需终端的脚本吗?
我最终选择了 webpack with the copy-webpack-plugin。
虽然在撰写本文时不幸的是手表模式是broken,但它似乎非常符合我的需求几乎:
- 这种方法只需要 2 个终端(一个用于 webpack,另一个用于 nodemon)。它并不完美,但比 3 好多了。
- 新文件应该自动获取(尽管目前不是 100% 正确工作)
- 静态文件中的更改不应该导致完全重新编译,这会导致服务器重新启动(同样,这目前不能 100% 正确地工作)
- Webpack 处理
Ctrl+C
优雅退出
- 对我来说最重要的原因:copy-webpack-plugin allows me to specify how I want my files to be copied in more detailed with the context 选项
在调试快速服务器时,我的 'build & run' 过程包括 3 个步骤:
- 使用
tsc
编译 TypeScript 源代码
- 将图像和模板等静态文件复制到
dist/
- 运行编译后的
server.js
文件
这些步骤中的每一个都可以使用 监视模式 自动执行,但我正在努力将这三个步骤结合在一起。 我设法通过使用 tsc-watch to watch the TypeScript sources, cpx to copy the static files and finally nodemon 重新启动服务器来让它工作。 这种方法 有效 但有几个问题:
cpx
只监视开始时存在的文件(我觉得tsc-watch
也是这样有时,有点奇怪)- 这种方法需要在 3 个单独的终端中使用 3 个命令,这很不方便
cpx
和tsc-watch
都没有正确处理Ctrl+C
退出,导致各种问题
我 tsc-watch
和实际服务器)。
使用 tsc-watch
和 --onSuccess
来复制静态文件是不够的,因为模板文件中的更改不会被拾取。这可以通过更改源文件中的注释来解决,但这会触发完全重新编译(重新启动服务器)。
使用 webpack's watch mode 也是不够的,因为它不会获取新文件并进一步污染控制台输出。
是否有任何我可能错过的解决方案?我应该只写一个自动打开 3 个所需终端的脚本吗?
我最终选择了 webpack with the copy-webpack-plugin。
虽然在撰写本文时不幸的是手表模式是broken,但它似乎非常符合我的需求几乎:
- 这种方法只需要 2 个终端(一个用于 webpack,另一个用于 nodemon)。它并不完美,但比 3 好多了。
- 新文件应该自动获取(尽管目前不是 100% 正确工作)
- 静态文件中的更改不应该导致完全重新编译,这会导致服务器重新启动(同样,这目前不能 100% 正确地工作)
- Webpack 处理
Ctrl+C
优雅退出 - 对我来说最重要的原因:copy-webpack-plugin allows me to specify how I want my files to be copied in more detailed with the context 选项