Sass 狼吞虎咽的livereload问题(保存两次)

Sass 狼吞虎咽的livereload问题(保存两次),sass,gulp,watch,livereload,Sass,Gulp,Watch,Livereload,我最近从grunt切换到了gulp,到目前为止,我已经成功地配置了gulp来做我想做的事情。我唯一的问题是livereload,我发现我必须保存两次才能在浏览器中查看编译的SAS。Sass似乎被推迟了 有没有办法确保livereload在编译sass之前不会执行?这是我的配置: // Dependencies var gulp = require('gulp'); var watch = require('watch'); var livereload = requi

我最近从grunt切换到了gulp,到目前为止,我已经成功地配置了gulp来做我想做的事情。我唯一的问题是livereload,我发现我必须保存两次才能在浏览器中查看编译的SAS。Sass似乎被推迟了

有没有办法确保livereload在编译sass之前不会执行?这是我的配置:

// Dependencies
var gulp        = require('gulp');
var watch       = require('watch');
var livereload  = require('gulp-livereload');
var sass        = require('gulp-sass');
var prefix      = require('gulp-autoprefixer'); 
var cssmin      = require('gulp-cssmin');
var rename      = require('gulp-rename');
var uglify      = require('gulp-uglify');
var concat      = require('gulp-concat');
var plumber     = require('gulp-plumber');
var notify      = require('gulp-notify');

onError = function(error){  
    notify.onError({
        title:    "Gulp",
        subtitle: "Failure!",
        message:  "<%= error.message %>",
        sound:    "Beep"
    })(error);

    this.emit('end');
};

// Watch
gulp.task('watch', function(){
    gulp.watch('src/css/**/*.scss', ['sass']).on('change', livereload.changed);
    gulp.watch('src/js/**/*.js', ['concat']).on('change', livereload.changed);
    gulp.watch('*').on('change', livereload.changed);
});

// Sass
gulp.task('sass', function(){
    gulp.src('src/css/style.scss')
        .pipe(plumber({errorHandler: onError}))
        .pipe(sass({style: 'expanded'}))
        .pipe(prefix('last 4 versions', 'ie 8', 'ie 9'))
        .pipe(gulp.dest('src/css/build'))
        .pipe(cssmin())
        .pipe(rename({suffix:'.min'}))
        .pipe(gulp.dest('dist/css'))
});

// Concat
gulp.task('concat', function(){
    gulp.src(['src/js/models/*.js', 'src/js/views/*.js', 'src/js/controllers/*.js'])
        .pipe(plumber({errorHandler: onError}))
        .pipe(concat('main.js'))
        .pipe(gulp.dest('src/js/build'))
        .pipe(uglify())
        .pipe(rename({suffix:'.min'}))
        .pipe(gulp.dest('dist/js'))
})

// Default
gulp.task('default', ['watch'], function(){
        livereload.listen();
});
//依赖项
var gulp=需要(“gulp”);
var watch=需要(“watch”);
var livereload=需要('GLUP-livereload');
var sass=需要('gulp-sass');
var前缀=require('gulp-autoprefixer');
var cssmin=require('gulp-cssmin');
var rename=require('gulp-rename');
var-uglify=需要('gulp-uglify');
var concat=需要(“咕噜咕噜咕噜”);
var管道工=需要(“大口管道工”);
var notify=需要('gulp-notify');
onError=函数(错误){
通知一个错误({
标题:“大口喝”,
副标题:“失败!”,
消息:“”,
声音:“嘟嘟”
})(错误);
这个.emit('end');
};
//监视
吞咽任务('watch',function(){
大口观看('src/css/***.scss',['sass'])。打开('change',livereload.changed);
大口观看('src/js/***.js',['concat'])。打开('change',livereload.changed);
在('change',livereload.change)上吞下手表('*');
});
//无礼
gulp.task('sass',function(){
gulp.src('src/css/style.scss'))
.管道(管道工({errorHandler:onError}))
.pipe(sass({style:'expanded'}))
.pipe(前缀('last 4 versions'、'ie 8'、'ie 9'))
.pipe(gulp.dest('src/css/build'))
.pipe(cssmin())
.pipe(重命名({后缀:'.min'}))
.pipe(大口目的地('dist/css'))
});
//海螺
吞咽任务('concat',函数(){
gulp.src(['src/js/models/*.js','src/js/views/*.js','src/js/controllers/*.js']))
.管道(管道工({errorHandler:onError}))
.pipe(concat('main.js'))
.pipe(大口目的地('src/js/build'))
.管道(丑()
.pipe(重命名({后缀:'.min'}))
.pipe(大口目的地('dist/js'))
})
//违约
gulp.task('default',['watch',function()){
利弗雷洛德。听();
});

您当前的
监视任务是告诉gulp在您的一个sass文件发生更改时立即运行livereload,而不是等待sass任务完成

根据报告:

  • 添加
    .pipe(livereload())
    作为
    sass
    任务的最后一步
  • 从sass文件中删除
    livereload.change
    步骤
    watch
    任务

  • 这将确保在编译css后,livereload步骤始终在sass任务中的最后一步执行。

    您当前的
    监视
    任务是告诉gulp在您的一个sass文件发生更改时立即运行livereload,而不是等待sass任务完成

    根据报告:

  • 添加
    .pipe(livereload())
    作为
    sass
    任务的最后一步
  • 从sass文件中删除
    livereload.change
    步骤
    watch
    任务

  • 这将确保在编译css后,livereload步骤始终在sass任务中的最后一步执行。

    您当前的
    监视
    任务是告诉gulp在您的一个sass文件发生更改时立即运行livereload,而不是等待sass任务完成

    根据报告:

  • 添加
    .pipe(livereload())
    作为
    sass
    任务的最后一步
  • 从sass文件中删除
    livereload.change
    步骤
    watch
    任务

  • 这将确保在编译css后,livereload步骤始终在sass任务中的最后一步执行。

    您当前的
    监视
    任务是告诉gulp在您的一个sass文件发生更改时立即运行livereload,而不是等待sass任务完成

    根据报告:

  • 添加
    .pipe(livereload())
    作为
    sass
    任务的最后一步
  • 从sass文件中删除
    livereload.change
    步骤
    watch
    任务

  • 这将确保在编译css后,livereload步骤将始终在sass任务中的最后一个发生。

    不是直接回答,但请记住从您的
    sass
    &
    concat
    tasks->
    return gulp.src返回流(..
    不是直接回答,但请记住从您的
    sass
    concat
    任务返回流->
    返回gulp.src(..
    不是直接回答,但请记住从
    sass
    concat
    任务->
    返回gulp.src(..
    不是直接回答,但请记住从您的
    sass
    concat
    任务返回流->
    返回gulp.src(..