1
我使用Gulp和Browserify一起設置了一個項目,但我在獲取watch命令時發現了一些問題,以便捕獲錯誤並繼續觀察。Gulp - 導致任務停止的錯誤
我使用默認任務(下面的代碼)運行'gulp'命令。此任務使用watch設置,以捕獲我的文件中的任何更改,然後使用Browserify編譯我的js,並編譯我的scss文件。
一切順利,除非我在我的js中發生語法錯誤。基本上,如果發生這種情況控制檯顯示錯誤,但不再捕捉對我的js文件的更改。
我原本省略了錯誤處理,這是造成整個手錶任務失敗,但現在我已經在那裏 - 手錶任務仍在繼續,即使我犯了語法錯誤它工作得很好,我SCSS( )但它根本不會對我的js發生任何變化。
var gulp = require('gulp'),
gutil = require('gulp-util'),
browserify = require('browserify'),
changed = require('gulp-changed'),
compass = require('gulp-compass'),
uglify = require('gulp-uglify'),
livereload = require('gulp-livereload'),
transform = require('vinyl-transform'),
sassSources = ['_src/sass/**/*.scss'],
jsSources = ['_src/js/admin.js', '_src/js/main.js'];
var onError = function (err) {
gutil.log(gutil.colors.green(err));
};
gulp.task('js', function() {
var browserified = transform(function(filename) {
var b = browserify(filename);
return b.bundle();
});
return gulp.src(jsSources)
.pipe(browserified)
.pipe(uglify())
.pipe(gulp.dest('assets/js'))
});
gulp.task('js-dev', function() {
var browserified = transform(function(filename) {
var b = browserify(filename);
return b.bundle();
});
return gulp.src(jsSources)
.pipe(browserified)
.on('error', onError)
.pipe(gulp.dest('assets/js'))
.pipe(livereload())
});
gulp.task('sass', function() {
gulp.src(sassSources)
.pipe(compass({
style: 'compressed',
sass: '_src/sass',
css: 'assets/css',
font: 'assets/fonts',
image: 'assets/images',
javascript: 'assets/js',
relative: true,
require: ['breakpoint']
}))
.pipe(gulp.dest('assets/css'))
});
gulp.task('sass-dev', function() {
gulp.src(sassSources)
.pipe(changed('assets/css'))
.pipe(compass({
style: 'expanded',
sass: '_src/sass',
css: 'assets/css',
font: 'assets/fonts',
image: 'assets/images',
javascript: 'assets/js',
relative: true,
require: ['breakpoint']
}))
.on('error', onError)
.pipe(gulp.dest('assets/css'))
.pipe(livereload())
});
gulp.task('watch', function() {
livereload.listen()
gulp.watch(jsSources, ['js-dev'])
gulp.watch(sassSources, ['sass-dev'])
gulp.watch(['**/*.php']).on('change', function(file) { livereload.changed(file.path) })
})
gulp.task('default', ['watch', 'js-dev', 'sass-dev'])
gulp.task('build', ['js', 'sass'])
上面的代碼是我的整個gulpfile但我的測試任務是默認的任務 - 和處理JS任務是「JS-dev的」任務。
當我的sass-dev任務具有相同的錯誤處理功能時,爲什麼我的代碼會導致js-dev任務失敗?
謝謝!