自动编译TypeScript源并复制静态(模板)文件

问题描述 投票:1回答:1

调试快速服务器时,我的“构建和运行”过程包括3个步骤:

  • 使用tsc编译TypeScript源代码
  • 将图像和模板等静态文件复制到dist/
  • 运行已编译的server.js文件

这些步骤中的每一步都可以使用手表模式自动完成,但我很难将三者合并在一起。我设法通过使用tsc-watch来观察TypeScript源,cpx来复制静态文件,最后使用nodemon来重启服务器。这种方法有效,但有几个问题:

  • cpx只监视它开始时存在的文件(我认为tsc-watch有时会这样做,这有点奇怪)
  • 这种方法需要3个独立终端中的3个命令,这很简单
  • cpxtsc-watch都没有正确处理Ctrl+C退出,导致各种问题

found some other questions与这个主题有关,但他们都没有解决上述问题(虽然他们确实告诉我有关cpx和tsc-watch的信息)。我不想使用concurrently,因为它可能导致计时问题,它混合了来自不同进程的控制台输出(最值得注意的是tsc-watch和实际的服务器)。

使用tsc-watch'es --onSuccess复制静态文件是不够的,因为模板文件中的更改将无法获取。这可以通过更改源文件中的注释来解决,但这会触发完整的重新编译(重新启动服务器)。使用webpack's watch mode也不够,因为它不会接收新文件并且会更多地污染控制台输出。

有没有我可能错过的解决方案?我应该编写一个自动打开3个所需终端的脚本吗?

node.js typescript express ejs nodemon
1个回答
0
投票

我最终用webpack去找copy-webpack-plugin

尽管在编写本报告时手表模式不幸是broken,但它似乎几乎完全符合我的需求:

  • 这种方法只需要2个终端(一个用于webpack,另一个用于nodemon)。它并不完美,但它比3好很多。
  • 应自动获取新文件(尽管目前无法100%正常工作)
  • 静态文件的更改不应导致完全重新编译,从而导致服务器重新启动(同样,这当前不能100%正常工作)
  • Webpack优雅地处理Ctrl+C退出
  • 对我来说最重要的原因是:copy-webpack-plugin允许我指定我希望如何使用context选项更详细地复制文件
© www.soinside.com 2019 - 2024. All rights reserved.