При неправильном подключении файла (пустые символы в конце строки, неправильное расширение файла, неправильный путь) gulp-rigger останавливает watch. Есть ли способы обработать такого рода ошибки и избежать остановки watch?
plumber не помог, отрабатывает при ошибках в самих файлах (js,css,pug), но не при подключении файла
gulpfile.js
'use strict';
var gulp = require('gulp'),
watch = require('gulp-watch'),
prefixer = require('gulp-autoprefixer'),
uglify = require('gulp-uglify'),
sass = require('gulp-sass'),
rigger = require('gulp-rigger'),
pug = require('gulp-pug'),
cssmin = require('gulp-minify-css'),
imagemin = require('gulp-imagemin'),
pngquant = require('imagemin-pngquant'),
rename = require('gulp-rename'),
rimraf = require('rimraf'),
csscomb = require('gulp-csscomb'),
browserSync = require("browser-sync"),
notify = require('gulp-notify'),
reload = browserSync.reload;
var path = {
dist: {
html: 'dist/',
js: 'dist/js/',
css: 'dist/',
img: 'dist/images/',
fonts: 'dist/fonts/'
},
src: {
html: 'dist/*.html',
pug: 'src/pug/*.pug',
css: 'src/css/template_styles.scss',
js: 'src/js/main.js',
img: 'src/images/**/*.*',
fonts: 'src/fonts/**/*.*'
},
watch: {
js: 'src/js/**/*.js',
pug: 'src/pug/**/*.pug',
css: 'src/css/**/*.scss',
img: 'src/images/**/*.*',
fonts: 'src/fonts/**/*.*'
},
clean: './dist'
};
var config = {
server: {
baseDir: './dist'
},
tunnel: true,
host: 'localhost',
port: 9000,
logPrefix: 'Postnov.Frontend'
};
gulp.task('pug:build', function() {
return gulp.src(path.src.pug)
.pipe(rigger())
.on('error', handleError)
.pipe(pug(
{pretty: true}
))
.on('error', handleError)
.pipe(gulp.dest(path.dist.html))
.pipe(reload({ stream: true }));
})
gulp.task('js:build', function() {
return gulp.src(path.src.js)
.on('error', handleError)
.pipe(rigger())
.on('error', handleError)
.pipe(gulp.dest(path.dist.js))
.pipe(uglify())
.pipe(rename({suffix: '.min'}))
.on('error', handleError)
.pipe(gulp.dest(path.dist.js))
.pipe(reload({ stream: true }));
})
gulp.task('css:build', function() {
return gulp.src(path.src.css)
.pipe(rigger())
.on('error', handleError)
.pipe(sass())
.on('error', handleError)
.pipe(prefixer({
browsers: ['last 15 versions'],
cascade: false,
grid: true
}))
.pipe(csscomb())
.pipe(gulp.dest(path.dist.css))
.pipe(cssmin())
.pipe(rename({suffix: '.min'}))
.pipe(gulp.dest(path.dist.css))
.pipe(reload({ stream: true }));
});
function handleError(err) {
console.log(err.toString());
this.emit('end');
}
gulp.task('images:build', function() {
return gulp.src(path.src.img)
.pipe(gulp.dest(path.dist.img))
});
gulp.task('fonts:build', function() {
return gulp.src(path.src.fonts)
.pipe(gulp.dest(path.dist.fonts))
});
gulp.task('build', [
'pug:build',
'css:build',
'js:build',
'images:build',
'fonts:build',
])
gulp.task('watch', ['images:build', 'fonts:build', 'css:build', 'js:build', 'pug:build'], function() {
gulp.watch('src/css/**/*.scss', ['css:build'])
gulp.watch('src/js/**/*.js', ['js:build'])
gulp.watch('src/pug/**/*.pug', ['pug:build'])
})
gulp.task('clean', function(cb) {
rimraf(path.clean, cb);
});
gulp.task('webserver', function() {
browserSync(config);
});
gulp.task('default', ['build', 'webserver', 'watch']);