【问题标题】:Auto-starting Node.js application on Vagrant when there are changes to code当代码发生更改时,在 Vagrant 上自动启动 Node.js 应用程序
【发布时间】:2016-08-27 23:51:57
【问题描述】:

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

但我不能使用nodemon。它不会及时发现变化。当我使用 -L 标志时,它会在客户机上消耗过多的 CPU。这些目前是well-known issues

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

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

【问题讨论】:

    标签: node.js vagrant nodemon


    【解决方案1】:

    您似乎可以在客户机上尝试其他工具作为 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
    

    【讨论】:

    • 聪明的把戏。一个小的补充是,这不仅限于pm2。可以使用另一个节点运行器,例如 forever,并且只需要更改 shell.task 中运行的命令。
    【解决方案2】:

    在我看来,Ates 的回答有点臃肿(pm2、Gulp、gulp-shell 和过多的 gulpfile?!)。 nodemon 的一个很好的替代方案是一个类似的库,称为 node-dev。在 nodemon 的 Vagrant 问题下也提到了这一点(我想你已经浏览过了)。

    基本用法:

    node-dev --no-deps app.js
    

    一切顺利:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多