У меня возникла проблема с каким-то странным взаимодействием между watchify и gulp.watch. Когда мы используем watchify с опросом, который мне нужно сделать, потому что он работает в бродячей среде, тогда задача gulp.watch запускается только при первом изменении файлов.Часы Gulp только срабатывают один раз с watchify
gulpfile:
var gulp = require('gulp');
var util = require('gulp-util');
var eslint = require('gulp-eslint');
var browserify = require('browserify');
var watchify = require('watchify');
var source = require('vinyl-source-stream');
function bundle(bundler) {
return bundler
.bundle()
.on('error', (error) => util.log(util.colors.red('Error compiling scripts:'), error.message))
.pipe(source('./app.js'))
.pipe(gulp.dest('./'));
}
gulp.task('default', ['build', 'watch']);
gulp.task('build', ['lint', 'scripts']);
gulp.task('lint', function() {
gulp.src('./src/**/*.js')
.pipe(eslint());
});
gulp.task('scripts', ['lint'], function() {
var bundler = browserify({
entries: ['./src/app.js'],
cache: {},
packageCache: {},
fullPaths: true,
});
var watcher = watchify(bundler, {poll: true});
watcher.on('update',() => {
util.log('Now Updating Scripts...');
return bundle(watcher);
});
return bundle(watcher);
})
gulp.task('watch', ['build'], function() {
gulp.watch(['./src/**/*.js'], ['lint']);
})
Sample хранилище здесь: https://github.com/mudetroit/watchify-gulp-watch-issue
При запуске глотка и изменить файл дважды после начала компиляции вы видите следующее.
[12:02:49] Using gulpfile ~/repo/watchify-gulp-watch-issue/gulpfile.js
[12:02:49] Starting 'lint'...
[12:02:49] Finished 'lint' after 24 ms
[12:02:49] Starting 'scripts'...
[12:02:49] Finished 'scripts' after 98 ms
[12:02:49] Starting 'build'...
[12:02:49] Finished 'build' after 6.17 μs
[12:02:49] Starting 'watch'...
[12:02:49] Finished 'watch' after 8.41 ms
[12:02:49] Starting 'default'...
[12:02:49] Finished 'default' after 11 μs
[12:03:48] Starting 'lint'...
[12:03:48] Finished 'lint' after 3.87 ms
[12:03:48] Now Updating Scripts...
[12:03:55] Now Updating Scripts...
Несколько пунктов стоит отметить, если я не использую watchify и сделать полный перекомпилирует это работает просто отлично, но это замедлить, чтобы быть полезным на практике. Если я беру опрос, он отлично работает, но это мешает ему работать в бродячем окружении с NFS. Попытался понять, что происходит здесь все утро, и никуда не денусь, поэтому надеюсь, что смогу помочь.
Привет, Мэтт, очень приятно видеть кого-то, имеющего такую же проблему ... спасибо за рытье! Как вы можете запустить это в отдельных процессах? У вас есть пример? – Jacob