Gulp任务在被监视时未按顺序运行



当我运行我的gump文件时,一切都按预期进行,我没有收到任何错误。然而,每当我对SCSS文件进行更改时,终端都会显示cleanCss、sass和autoprefixer任务正在运行,但这些更改不会反映在最终的CSS文件中。

我已经经历了所有的事情,不知道为什么会发生这种事。我所能想到的就是任务的无序运行,但我不明白为什么它们在第一次运行时运行良好,但在随后的运行中却没有。这是我的一些代码:

// default gulp task
gulp.task('default', ['cleanCss', 'cleanJs', 'cleanImg', 'sass', 'scripts', 'imagePro', 'autoprefixer', 'watch']);
//watch for changes
gulp.task('watch', function() {
    gulp.watch('./assets/img/*', ['cleanImg', 'imagePro']);
    gulp.watch('./assets/js/*.js', ['cleanJs', 'scripts']);
    gulp.watch('./assets/sass/bootstrap/*.scss', ['cleanCss', 'sass', 'autoprefixer']);
});
//
//Compile scss to css
//
gulp.task('sass', ['cleanCss'], function () {
  gulp.src('./assets/sass/*.scss')
    .pipe(sass.sync().on('error', sass.logError))
    // .pipe(sass({outputStyle: 'compressed'}))
    .pipe(gulp.dest('./assets/css'));
});
//
// Post Process CSS
//
// Add Vendor Prefixes
gulp.task('autoprefixer', ['cleanCss', 'sass'], function() {
  gulp.src('./assets/css/*.css')
    .pipe(sourcemaps.init())
    .pipe(postcss([ autoprefixer({ browsers: ['last 2 versions'] }) ]))
    .pipe(sourcemaps.write('.'))
    .pipe(gulp.dest('./assets/build/css'));
});

如果您希望异步任务按顺序运行,则需要返回流。示例:

gulp.task('sass', ['cleanCss'], function () {
  return gulp.src('./assets/sass/*.scss')
    .pipe(sass.sync().on('error', sass.logError))
    // .pipe(sass({outputStyle: 'compressed'}))
    .pipe(gulp.dest('./assets/css'));
});

检查中的异步任务支持文档https://github.com/gulpjs/gulp/blob/master/docs/API.md

最新更新