postnov_daniil
@postnov_daniil
Начинающий фронтендер

Как обработать ошибки от gulp-rigger без остановки watch?

При неправильном подключении файла (пустые символы в конце строки, неправильное расширение файла, неправильный путь) gulp-rigger останавливает watch. Есть ли способы обработать такого рода ошибки и избежать остановки watch?

plumber не помог, отрабатывает при ошибках в самих файлах (js,css,pug), но не при подключении файла

5ab89af74ff9c433273184.png

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']);
  • Вопрос задан
  • 776 просмотров
Пригласить эксперта
Ответы на вопрос 1
Tispartaaaa
@Tispartaaaa
Начинающий фронтендер :)
Если я не ошибаюсь, то это должно помочь.

gearmobile.github.io/gulp/gulp-plumber
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы