Подтвердить что ты не робот

Перезапустить локальный файл Heroku при смене файла?

Кажется, что локальный сервер, запущенный с "heroku local web", не следит за изменениями файлов и не перезапускает себя. Как я могу заставить это сделать это?

4b9b3361

Ответ 1

Самый простой способ сделать это - запустить nodemon с heroku local в качестве исполняемого файла, т.е. nodemon --exec "heroku local".

Однако, heroku local выходит с ненулевым кодом выхода для сигнала отключения по умолчанию nodemon (SIGUSR2), поэтому вам нужно добавить дополнительный флаг для nodemon, чтобы установить сигнал прерывания на SIGTERM.

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

(проверено с помощью [email protected], [email protected], node @8.5.0)

Ответ 2

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

Ответ 3

Я думаю, что heroku local будет watch для изменений в статических ресурсах (клиентский код). Но явно не идеально для ручного перезапуска сервера с каждым изменением исходного кода на веб-сервере (код на стороне сервера).

Если вы создаете приложение NodeJS, я предлагаю попробовать команду watch, которую предоставляет Gulp. Однако это также требует, чтобы (a) установил Gulp и (b) написал Gulp script. Снова это решение будет работать только для NodeJS, и эти шаги не понадобятся, если heroku local просмотрел файлы для вас.

  • Установить NodeJS
  • Установите Gulp

    npm install gulp --save-dev
    
  • Добавьте Gulp script (где находится файл 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']);
    });
    
  • Запустите Gulp script (из каталога, в котором находится файл Procfile)

     gulp heroku-local:watch