的簡單的解決辦法是使用一口,管道工一點更加妥善地處理錯誤:
var plumber = require("gulp-plumber");
gulp.task('scripts',() => {
return gulp.src('assets/js/src/*.js')
.pipe(plumber())
.pipe(jshint())
.pipe(jshint.reporter('jshint-stylish', {beep: true}))
.pipe(concat('main.js'))
.pipe(gulp.dest('assets/js/build/'))
.pipe(uglify())
.pipe(gulp.dest('assets/js/'))
.pipe(browserSync.stream({stream: true}));
});
就個人而言,我不喜歡這樣的解決方案,因爲它會阻止你的縮小的文件被更新。這裏是我會推薦的:
var jshintSuccess = function (file) {
return file.jshint.success;
}
gulp.task('scripts',() => {
return gulp.src('assets/js/src/*.js')
.pipe(sourcemaps.init())
.pipe(jshint())
.pipe(jshint.reporter('jshint-stylish', {
beep: true
}))
.pipe(gulpif(jshintSuccess, uglify()))
.pipe(concat('main.js'))
.pipe(sourcemaps.write('maps'))
.pipe(gulp.dest('assets/js/'))
.pipe(browserSync.stream({
stream: true
}));
});
首先,請注意,我沒有寫入多個目的地。相反,我使用的是源代碼,因此您不需要未分類的代碼。其次,我使用gulp-if基於jshint的結果通過uglify有條件地管理你的代碼。有錯誤的代碼將繞過uglify,以便它仍然會將其轉化爲目標文件。
現在,您可以使用開發人員工具對其進行檢查和調試。
注:我建議僅限本地開發。我不會將其連接到持續集成管道,因爲您只需要良好的代碼即可投入生產。要麼爲此設置不同的任務,要麼添加另一個gulp-if條件以防止基於環境變量構建損壞的代碼。
它的工作!非常感謝 :) – jst16