我正在Vagrant盒子上运行Node.js应用程序,并希望Node.js应用程序在主机上发生任何变化时重新启动。
但我无法使用nodemon。它没有及时发现变化。当我使用-L
标志时,它会在客户机上消耗太多CPU。目前这些是well-known issues。
我也曾尝试过Vagrant的rsync-auto,但由于某种原因它没有足够的响应。
有解决方法吗?也许我可以在主机上应用的东西?
答案 0 :(得分:3)
似乎还有其他工具可以在来宾计算机上尝试作为nodemon的替代方案,但是观察文件更改将是主机上最快的。
这是一个对我有用的解决方法:
这个要点:在主机上使用观察程序并向来宾计算机发出SSH命令以重新启动应用程序。
这是一个食谱(你可以使用你喜欢的任何其他工具):
首先,抓住pm2:
npm install -g pm2
通过pm2启动你的Node.js应用程序:
pm2 app/server.js
然后抓住Gulp:
npm install -g gulp-cli
npm install --save-dev gulp
npm install --save-dev gulp-shell
然后创建一个gulpfile.js:
var gulp = require('gulp');
var shell = require('gulp-shell');
gulp.task('server:watch', function () {
gulp.watch('app/**/*.js', [ 'server:restart' ]);
});
gulp.task('server:restart', shell.task([ 'vagrant ssh -- pm2 restart server' ]));
你已经完成了。要开始观看文件并在文件更改时自动启动服务器:
gulp server:watch
答案 1 :(得分:2)
阿泰'在我看来,答案提供了相当多的膨胀(pm2,Gulp,gulp-shell和过多的gulpfile?!)。 nodemon
的一个很好的替代方案是类似的名为node-dev的lib。它也在nodemon与Vagrant的问题上提到过(我想象你已经浏览过了)。
基本用法:
node-dev --no-deps app.js
一切顺利:)