Javascript 狼吞虎咽+;Sass&x2B;Del-随机行为

Javascript 狼吞虎咽+;Sass&x2B;Del-随机行为,javascript,node.js,gulp,gulp-sass,Javascript,Node.js,Gulp,Gulp Sass,我不明白为什么这个简单的脚本会根据del插件设置的不同而表现出不同的行为 当我启动gulpsass时,我只想清理public/cssdir并从sass“编译”css。到目前为止一切顺利: gulp.task('clean-css', del.bind(null,['./public/css'])); gulp.task('sass', ['clean-css'], function () { return gulp.src('./resources/sass/**/*.scss')

我不明白为什么这个简单的脚本会根据
del
插件设置的不同而表现出不同的行为

当我启动
gulpsass
时,我只想清理
public/css
dir并从sass“编译”css。到目前为止一切顺利:

gulp.task('clean-css', del.bind(null,['./public/css']));

gulp.task('sass', ['clean-css'], function () {
  return gulp.src('./resources/sass/**/*.scss')
    .pipe(plugins.sass({outputStyle: 'compressed'})) 
    .pipe(gulp.dest('./public/css'));
});
但是,如果将clean css任务更改为:

gulp.task('clean-css', del(['./public/css']));
那么它只会每隔一段时间起作用。第一次清理并生成css,下一次删除目录但不生成任何内容

那么,
del(['./public/css'])
del.bind(null,['./public/css'])
之间有什么区别呢?为什么它会以这种方式影响脚本

更新: 当它没有生成任何内容时,我看到此错误:

events.js:141
      throw er; // Unhandled 'error' event
            ^
Error: ENOENT: no such file or directory, open 'C:\Users\XXXX\gulp-project\public\css\style.css'
    at Error (native)
tl;dr

如果没有提供回调,Gulp不知道何时完成
del
。如果在
del
之前运行
sass
任务,并且实际存在要删除的文件,则无论是否使用
bind
del
每隔一段时间都有效


根据,您还应该向
del
提供回调方法。这是指任务完成时:

var gulp = require('gulp');
var del = require('del');

gulp.task('clean:mobile', function (cb) {
  del([
    'dist/report.csv',
    // here we use a globbing pattern to match everything inside the `mobile` folder
    'dist/mobile/**/*',
    // we don't want to clean this file though so we negate the pattern
    '!dist/mobile/deploy.json'
  ], cb);
});

gulp.task('default', ['clean:mobile']);
我假设每次运行任务的顺序都不同,因为gulp不知道在没有提供回调的情况下,
del
何时完成。根据报告:

如果要创建一个系列,其中任务按特定顺序运行,则需要做两件事:

  • 给它一个提示,告诉它任务何时完成
  • 并给它一个提示,一项任务取决于另一项任务的完成
  • 您是否有任何理由使用
    null
    删除
    del