Есть gulpfile.js, он работает хорошо, но есть одно но. При любой ошибке в less, нужно перезапускать gulp watch. Подскажите, как это исправить?
var gulp = require('gulp'),
less = require('gulp-less'), //подключаем препроцессор LESS
browserSync = require('browser-sync'), //Подключаем Browser Sync
concat = require('gulp-concat'), // Подключаем gulp-concat (для конкатенации файлов)
uglify = require('gulp-uglifyjs'), // Подключаем gulp-uglifyjs (для сжатия JS)
cssnano = require('gulp-cssnano'), // Подключаем пакет для минификации CSS
rename = require('gulp-rename'); // Подключаем библиотеку для переименования файлов
del = require('del'), // Подключаем библиотеку для удаления файлов и папок
imagemin = require('gulp-imagemin'), // Подключаем библиотеку для работы с изображениями
pngquant = require('imagemin-pngquant'), // Подключаем библиотеку для работы с png
cache = require('gulp-cache'), // Подключаем библиотеку кеширования
autoprefixer = require('gulp-autoprefixer'),// Подключаем библиотеку для автоматического добавления префиксов
smartgrid = require('smart-grid'),
gcmq = require('gulp-group-css-media-queries'),
plumber = require('gulp-plumber'),
cleanCSS = require('gulp-clean-css'),
sourcemaps = require('gulp-sourcemaps'),
connect = require('gulp-connect-php');
gulp.task('default', function (){
console.log('Введите функцию.');
});
gulp.task('connect', function(callback) {
connect.server({
port: 8001
}, callback);
});
gulp.task('browser-sync', ['connect'], function(){
browserSync({
server: {
baseDir: 'project'
},
notify: false,
});
});
gulp.task('less', function() {
return gulp.src('build/less/*.less')
.pipe(plumber())
.pipe(less())
.pipe(autoprefixer(['last 15 versions', '> 1%', 'ie 8', 'ie 7'], { cascade: true })) //Включаем автопрефиксы
.pipe(gcmq()) //Группируем медиазапросы
.pipe(sourcemaps.init())
.pipe(cleanCSS({compatibility: 'ie8'}))
.pipe(sourcemaps.write())
.pipe(gulp.dest('project/css'))
.pipe(browserSync.reload({stream: true}))
});
gulp.task('scripts', function(){
return gulp.src([
'build/libs/jquery/dist/jquery.min.js',
'build/libs/jquery.mask.min.js',
'build/libs/owl.carousel.min.js'
])
.pipe(concat('libs.min.js'))
.pipe(uglify())
.pipe(gulp.dest('project/js'));
});
gulp.task('css-libs', ['less'], function(){
return gulp.src('project/css/libs.css')
.pipe(cssnano())
.pipe(rename({suffix: '.min'}))
.pipe(gulp.dest('project/css/'));
});
gulp.task('watch', ['browser-sync', 'css-libs', 'scripts'], function() {
gulp.watch('build/less/*.less', ['less']);
gulp.watch('project/**/*.php', browserSync.reload);
gulp.watch('project/*.html', browserSync.reload);
gulp.watch('project/**/*.js', browserSync.reload);
gulp.watch('project/fonts/*', browserSync.reload);
});
P.S. скрин ошибки
Перенеси plumber() выше, что бы он перехватывал ошибки less()
gulp.task('less', function() {
return gulp.src('build/less/*.less')
.pipe(plumber())
.pipe(less())
.pipe(autoprefixer(['last 15 versions', '> 1%', 'ie 8', 'ie 7'], { cascade: true })) //Включаем автопрефиксы
.pipe(gcmq()) //Группируем медиазапросы
.pipe(sourcemaps.init())
.pipe(cleanCSS({compatibility: 'ie8'}))
.pipe(sourcemaps.write())
.pipe(plumber.stop())
.pipe(gulp.dest('project/css'))
.pipe(browserSync.reload({stream: true}))
});
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости