在文件更改本地重新启动Heroku?

似乎本地服务器启动“heroku本地网”不注意文件的变化,并重新启动本身。 我怎样才能做到这一点?

heroku local只使用node-foremanhttps://www.npmjs.com/package/heroku-local ),所以它更容易使用,直接观看。

首先安装foremannodemon

 npm i --save-dev foreman nodemon 

现在,你需要在你的package.json设置两个脚本:

 { ... "scripts": { "start": "nf start", "watch": "nodemon --watch directory-to-watch" }, ... } 

您现在可以在监视该目录的同时运行应用程序,并使用更改重新加载

 npm run watch 

最简单的方法是使用heroku local作为可执行文件运行nodemon – 即nodemon --exec "heroku local"

但是, heroku local以非零的退出代码退出,并返回缺省节点closures信号(SIGUSR2),因此需要在nodemon上添加一个附加标志,将中断信号设置为SIGTERM。

nodemon --exec "heroku local" --signal SIGTERM

(使用heroku-cli@6.14.31-33a2d0a,nodemon@1.12.1,node@8.5.0进行testing)

我认为, heroku localwatch静态资源(客户端代码)的变化。 但是,对于每次对Web服务器进行的源代码更改(服务器端代码),手动重新启动服务器显然都不是很理想。

如果你正在创build一个NodeJS应用程序,我的build议是尝试Gulp提供的watch命令。 但是,这也需要你(a)安装Gulp,(b)编写Gulp脚本。 同样,这个解决scheme只能用于NodeJS,如果heroku local为你观看这些文件,这些步骤将不再需要。

  1. 安装NodeJS
  2. 安装Gulp

     npm install gulp --save-dev 
  3. 添加Gulp脚本(Procfile所在的地方)

    注意:无法获得以下watch代码以成功工作,但它可能为其他人创build工作解决scheme提供了一个模板。

     var gulp = require('gulp'); var exec = require('child_process').exec; gulp.task('heroku-local', function () { exec("heroku local"); }); gulp.task('heroku-local:watch', function () { gulp.watch([ 'file-to-watch', 'folder-to-watch/**/*' ], ['heroku-local']); }); 
  4. 运行Gulp脚本(从Procfile所在的目录)

      gulp heroku-local:watch