Кажется, что локальный сервер, запущенный с "heroku local web", не следит за изменениями файлов и не перезапускает себя. Как я могу заставить это сделать это?
Перезапустить локальный файл Heroku при смене файла?
Ответ 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