Gulp не выходит с watchify, browserify
Я хотел бы настроить gulp так, чтобы он мог выполнять две вещи: 1) использовать watchify для отслеживания обновлений в файлах и автоматической перестройки с помощью browserify на изменениях, и 2) выполнить специальную сборку один раз и выйти.
Кажется, #1 работает нормально, но у меня проблемы с получением #2 для работы. Я печатаю gulp build
в терминале и все отлично упаковано, но gulp не выходит и не выходит; это просто сидит там, и я не возвращен к командной строке.
Что я делаю неправильно? Вот весь gulpfile:
'use strict';
var gulp = require('gulp');
var browserify = require('browserify');
var watchify = require('watchify');
var source = require('vinyl-source-stream');
var gutil = require('gulp-util');
var b = watchify(browserify({
cache: {},
packageCache: {},
entries: ['./app/app.js'],
debug: true,
transform: ['reactify']
}));
b.on('log', gutil.log);
var bundle = function() {
return b.bundle()
.pipe(source('bundle.js'))
.pipe(gulp.dest('./dist'));
};
gulp.task('watch', function() {
b.on('update', bundle);
});
gulp.task('build', function() {
bundle();
});
gulp.task('default', ['watch', 'build']);
И вот вывод в моем терминале:
[11:14:42] Using gulpfile ~/Web Dev/event-calendar/gulpfile.js
[11:14:42] Starting 'build'...
[11:14:42] Finished 'build' after 4.28 ms
[11:14:45] 1657755 bytes written (2.99 seconds)
Гулп все еще работает после журнала в 11:14:45 и не выпрыгивает обратно в терминал.
1 ответ
Решение
.bundle()
не должен вызываться на обертку watchify. Следующее исправило все:
'use strict';
var gulp = require('gulp');
var browserify = require('browserify');
var watchify = require('watchify');
var source = require('vinyl-source-stream');
var gutil = require('gulp-util');
var b = function() {
return browserify({
cache: {},
packageCache: {},
entries: ['./app/app.js'],
debug: true,
transform: ['reactify']
});
};
var w = watchify(b());
w.on('log', gutil.log);
var bundle = function(pkg) {
return pkg.bundle()
.pipe(source('bundle.js'))
.pipe(gulp.dest('./dist'));
};
gulp.task('watch', function() {
bundle(w);
w.on('update', bundle.bind(null, w));
});
gulp.task('build', bundle.bind(null, b()));
gulp.task('default', ['watch']);