首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gulp + Sass + Del -随机行为

Gulp + Sass + Del -随机行为
EN

Stack Overflow用户
提问于 2015-07-14 07:33:57
回答 1查看 792关注 0票数 0

我不明白为什么这个简单的脚本会根据del插件的设置而有所不同。

当我启动gulp sass时,我只想清理public/css dir,并从sass“编译”public/css。到目前为止还不错:

代码语言:javascript
复制
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'));
});

但是,如果将清洁-css任务更改为:

代码语言:javascript
复制
gulp.task('clean-css', del(['./public/css']));

那么它每隔一次就能工作一次。第一次清除并生成css,下一次它删除目录,但不生成任何内容。

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

更新:当它没有生成任何我看到的错误时的

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-14 08:51:09

tl;博士

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

根据吞咽文件,您还应该向del提供回调方法。当任务完成时,这是古普怎么知道

代码语言:javascript
复制
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。根据文档

如果要创建任务按特定顺序运行的系列,则需要执行两项工作:

  1. 给它一个提示,告诉它什么时候完成任务,
  2. 并暗示一项任务取决于另一项任务的完成。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31400418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档