代码更改时在 Vagrant 上自动启动 Node.js 应用程序

Auto-starting Node.js application on Vagrant when there are changes to code

我是 运行 Vagrant box 上的 Node.js 应用程序,希望 Node.js 应用程序在主机发生任何变化时重新启动。

但是我无法使用nodemon. It doesn't pick up the changes in time. When I use the -L flag, it consumes too much CPU on the guest machine. These are currently well-known issues

我也尝试过 Vagrant 的 rsync-auto,但由于某些原因它的响应不够快。

有解决办法吗?也许我可以在主机上应用一些东西?

您可以在来宾计算机上试用其他工具作为 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

gulp-shell

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

A​​tes 的回答在我看来有点臃肿(pm2、Gulp、gulp-shell 和过多的 gulp 文件?!)。 nodemon 的一个很好的替代品是一个名为 node-dev 的类似库。在 nodemon 的 Vagrant 问题下也提到了它(我想你已经浏览过了)。

基本用法:

node-dev --no-deps app.js

祝一切顺利:)