Просматривать, когда вызывается узел app.listen() или портировать (livereload, nodejs и gulp).
Я пытаюсь получить gulp-livereload
работать с моим сервером nodejs. я использую gulp-nodemon
перезагрузить сервер после внесения изменений в файлы, это работает. У меня проблемы с вызовом livereload.reload()
в правильное время.
Я сейчас вызываю livereload.reload()
на .on('start'...
в моем gulpfile.js
(всякий раз, когда мой nodemon запускает скрипт). Это работает, но это занимает несколько секунд. Причина в том, что nodemon начинает запускать скрипт nodejs, который он вызывает livereload.listen()
до запуска сценария app.listen(port)
, так что мой браузер обновляется без готовности сервера.
Есть ли способ прослушать, если сценарий nodejs nodemon вызвал app.listen(port)
или, возможно, слушать, чтобы увидеть, если конкретный порт используется?
Я исправил проблему с небольшим сном, но он кажется таким неправильным и грязным.
2 ответа
Используйте удобочитаемое событие для мониторинга стандартного дочернего процесса.
пример:
nodemon({script: 'app.js',
nodeArgs: ['--harmony'],
stdout: false})
.on('readable', function(data) {
this.stdout.on('data', function(chunk) {
if (/koa server listening/.test(chunk)) {
console.log('livereload');
livereload.reload();
}
process.stdout.write(chunk);
});
this.stderr.pipe(process.stderr);
});
app.js
app.listen(3000, function(err) {
console.log('koa server listening');
});
Вот пример простого и проверенного решения для livereload, основанного на connect
сервер и connect-livereload
а также gulp-livereload
плагины, если это поможет
var gulp = require('gulp');
var connect = require('connect');
var connectLivereload = require('connect-livereload');
var opn = require('opn');
var gulpLivereload = require('gulp-livereload');
var config = {
rootDir: __dirname,
servingPort: 8080,
// the files you want to watch for changes for live reload
filesToWatch: ['*.{html,css,js}', '!Gulpfile.js']
}
// The default task - called when you run `gulp` from CLI
gulp.task('default', ['watch', 'serve']);
gulp.task('watch', ['connect'], function () {
gulpLivereload.listen();
gulp.watch(config.filesToWatch, function(file) {
gulp.src(file.path)
.pipe(gulpLivereload());
});
});
gulp.task('serve', ['connect'], function () {
return opn('http://localhost:' + config.servingPort);
});
gulp.task('connect', function(){
return connect()
.use(connectLivereload())
.use(connect.static(config.rootDir))
.listen(config.servingPort);
});