简体   繁体   English

Gulp + Growl +浏览器同步通知

[英]Gulp + Growl + Browser-sync notification

I use gulp and growl. 我用口水和咆哮。 I create this gulpfile.js : 我创建了这个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']);

When I run gulp, growl shows two notification and browser-sync twice reload page. 当我运行gulp时,咆哮显示两个通知,并且浏览器同步两次重新加载页面。 Maybe I do something wrong? 也许我做错了什么?

You run 'less' twice in the 'default' task. 您在“默认”任务中运行“较少”两次。 Its the first dependent task, will run, then it runs again in the 'watch' task because of gulp.run. 它的第一个相关任务将运行,然后由于gulp.run而在“监视”任务中再次运行。

Remove gulp.run in 'watch' task. 在“监视”任务中删除gulp.run。

Add 'less' as dependent task for 'watch' task instead. 将“较少”添加为“监视”任务的从属任务。

You probably want to stream your styles instead of full page reload so pipe less through this at the end. 您可能希望流式传输样式,而不是重新加载整个页面,因此最后减少了传递。

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

Your task do not return their streams, they will never finish due to that. 您的任务不会返回其流,因此它们将永远无法完成。 Tasks should always return a stream or take in a done-callback and call that if they are async. 任务应始终返回流或接受完成的回调,并在异步的情况下对其进行调用。

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']);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM