在文件更改本地重新启动Heroku?
似乎本地服务器启动“heroku本地网”不注意文件的变化,并重新启动本身。 我怎样才能做到这一点?
heroku local
只使用node-foreman
( https://www.npmjs.com/package/heroku-local ),所以它更容易使用,直接观看。
首先安装foreman
和nodemon
:
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 local
会watch
静态资源(客户端代码)的变化。 但是,对于每次对Web服务器进行的源代码更改(服务器端代码),手动重新启动服务器显然都不是很理想。
如果你正在创build一个NodeJS应用程序,我的build议是尝试Gulp提供的watch
命令。 但是,这也需要你(a)安装Gulp,(b)编写Gulp脚本。 同样,这个解决scheme只能用于NodeJS,如果heroku local
为你观看这些文件,这些步骤将不再需要。
- 安装NodeJS
-
安装Gulp
npm install gulp --save-dev
-
添加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']); });
-
运行Gulp脚本(从Procfile所在的目录)
gulp heroku-local:watch