Gulp + Growl + Уведомление о синхронизации с браузером

Я использую глоток и рычание. Я создаю это gulpfile.js:

var gulp = require("gulp");
var less = require("gulp-less");
var notifier = require('node-notifier');
var notify = require("gulp-notify");
var browserSync = require('browser-sync').create();
var reload = browserSync.reload;

gulp.task('less', function() {
 var trete;
 console.log(trete);
 gulp.src('css/main.less')
 .pipe(less())
 .on('error', function(err){
    trete = err.message;
    notifier.notify({
        'title': 'My notification',
        'message': trete
    });
    return false;
})
.pipe(notify("Всё заебись!"))
.pipe(gulp.dest('css/'))
});

gulp.task('bs-reload', function () {
browserSync.reload();
});
gulp.task('browser-sync', function() {
browserSync.init(['css/*.css', 'js/*.js'], {
    server: {
        baseDir: './'
    }
});
});

gulp.task('watch', function() {
gulp.watch('css/**', ['less']);
gulp.run('less');
gulp.watch(['*.html'], ['bs-reload']);
});

gulp.task('default', ['less', 'browser-sync', 'watch']);

Когда я запускаю gulp, рычание показывает два уведомления, а синхронизация с браузером дважды перезагружает страницу. Может я что-то не так делаю?


person Ismail Alekperov    schedule 25.05.2015    source источник


Ответы (1)


Вы запускаете «меньше» дважды в задаче «по умолчанию». Будет запущена первая зависимая задача, затем она снова запустится в задаче «наблюдение» из-за gulp.run.

Удалите gulp.run в задаче «смотреть».

Вместо этого добавьте «меньше» в качестве зависимой задачи для задачи «смотреть».

Вы, вероятно, захотите передавать свои стили вместо полной перезагрузки страницы, поэтому в конце используйте меньше каналов.

.pipe(gulp.dest(cssPath))
.pipe(browserSync.stream());

Ваша задача не возвращать их потоки, из-за этого они никогда не закончатся. Задачи всегда должны возвращать поток или принимать обратный вызов done и вызывать его, если они асинхронны.

var gulp = require("gulp");
var less = require("gulp-less");
var notifier = require('node-notifier');
var notify = require("gulp-notify");
var browserSync = require('browser-sync').create();
var reload = browserSync.reload;

gulp.task('less', function() {
    return gulp.src('css/main.less')
        .pipe(less())
            .on('error', function(err){
                notifier.notify({
                    'title': 'My notification',
                    'message': err.message
                });
                return false;
           })
       .pipe(notify("Всё заебись!"))
       .pipe(gulp.dest('css/'))
       .pipe(browserSync.stream());
});

gulp.task('browser-sync', ['less'], function() {
    browserSync.init({
        server: {
            baseDir: './'
        }
    });
});

gulp.task('watch', ['less'], function() {
    gulp.watch('css/**', 'less');
    gulp.watch('*.html').on('change', reload);
});

gulp.task('default', ['browser-sync', 'watch']);
person oldwizard    schedule 25.05.2015