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

Jor*_*ren 18 heroku watch node.js nodemon

似乎本地服务器以"heroku local web"开头,不会监视文件更改并重新启动.我该怎么做呢?

小智 17

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

但是,heroku local对于默认的nodemon关闭信号(SIGUSR2),退出时出现非零退出代码,因此需要向nodemon添加一个额外的标志,以将中断信号设置为SIGTERM.

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

(用heroku-cli@6.14.31-33a2d0a,nodemon @ 1.12.1,node@8.5.0测试)


Spa*_*ain 6

heroku local只是使用node-foreman(https://www.npmjs.com/package/heroku-local),因此更容易直接用于观看.

首先,安装foremannodemon:

npm i --save-dev foreman nodemon
Run Code Online (Sandbox Code Playgroud)

现在,您需要在以下位置设置两个脚本package.json:

{
  ...
  "scripts": {
    "start": "nf start",
    "watch": "nodemon --watch directory-to-watch"
  },
  ...
}
Run Code Online (Sandbox Code Playgroud)

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

npm run watch
Run Code Online (Sandbox Code Playgroud)


tfm*_*gue 1

我认为这heroku local将用于watch更改静态资源(客户端代码)。但是,在每次对 Web 服务器(服务器端代码)进行源代码更改时手动重新启动服务器显然并不理想。

如果您正在创建 NodeJS 应用程序,我的建议是尝试watchGulp 提供的命令。但是,这还要求您 (a) 安装 Gulp,以及 (b) 编写 Gulp 脚本。heroku local同样,此解决方案仅适用于 NodeJS,如果为您查看文件,则不需要这些步骤。

  1. 安装NodeJS
  2. 安装咕噜

    npm install gulp --save-dev
    
    Run Code Online (Sandbox Code Playgroud)
  3. 添加 Gulp 脚本(Procfile 所在的位置)

    注意:无法使以下watch代码成功工作,但它可能为其他人提供创建工作解决方案的模板。

    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']);
    });
    
    Run Code Online (Sandbox Code Playgroud)
  4. 运行 Gulp 脚本(从 Procfile 所在的目录)

     gulp heroku-local:watch
    
    Run Code Online (Sandbox Code Playgroud)