Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 自动编译TypeScript源代码并复制静态(模板)文件_Node.js_Typescript_Express_Ejs_Nodemon - Fatal编程技术网

Node.js 自动编译TypeScript源代码并复制静态(模板)文件

Node.js 自动编译TypeScript源代码并复制静态(模板)文件,node.js,typescript,express,ejs,nodemon,Node.js,Typescript,Express,Ejs,Nodemon,调试express server时,我的“构建和运行”过程包括3个步骤: 使用tsc 将图像和模板等静态文件复制到dist/ 运行编译的server.js文件 这些步骤中的每一步都可以通过手表模式实现自动化,但我很难将这三个步骤结合起来。 我通过监视TypeScript源代码、复制静态文件并最终重新启动服务器,成功地使其工作。 这种方法可行,但存在两个问题: cpx只监视它启动时存在的文件(我认为tsc-watch有时也会这样做,这有点奇怪) 这种方法需要在3个独立的终端中使用3个命令,这

调试express server时,我的“构建和运行”过程包括3个步骤:

  • 使用
    tsc
  • 将图像和模板等静态文件复制到
    dist/
  • 运行编译的
    server.js
    文件
这些步骤中的每一步都可以通过手表模式实现自动化,但我很难将这三个步骤结合起来。 我通过监视TypeScript源代码、复制静态文件并最终重新启动服务器,成功地使其工作。 这种方法可行,但存在两个问题:

  • cpx
    只监视它启动时存在的文件(我认为
    tsc-watch
    有时也会这样做,这有点奇怪)
  • 这种方法需要在3个独立的终端中使用3个命令,这很不方便
  • cpx
    tsc-watch
    都不能正确处理
    Ctrl+C
    退出,导致各种问题
我知道这与这个主题有关,但他们都没有解决上述问题(尽管他们确实告诉我cpx&tsc watch)。 我不想使用它,因为它可能会导致计时问题,并且会混合来自不同进程的控制台输出(最明显的是
tsc watch
和实际服务器)

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

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

我最终选择了

尽管不幸的是,在撰写本文时,watch模式已经过时,但它似乎几乎完全符合我的需要:

  • 这种方法只需要两个终端(一个用于webpack,另一个用于nodemon)。它并不完美,但比3好多了
  • 应自动拾取新文件(尽管当前未100%正常工作)
  • 静态文件中的更改不应导致完全重新编译,从而导致服务器重新启动(同样,当前无法100%正常工作)
  • 网页包句柄
    Ctrl+C
    优雅地退出
  • 对我来说,最重要的原因是:允许我使用该选项指定如何更详细地复制我的文件

我可能无法帮助您实现最终目标,但我一直在使用引擎盖下使用的
ts节点。我相信您可以将
onSuccess
添加到
tsconfig.json
中<当您更改
.ts
文件时,code>ts节点开发人员将监视并重新启动服务器。