javascript - 为什么 Gulp 在运行依赖它的任务之前没有完成我的 'clean' 任务?

标签 javascript gulp

我有一个 gulpfile,它应该在压缩代码之前清理我的 dist 目录。有时,清理任务仍在运行,而代码正在缩小,导致一些文件丢失。

是什么导致它这样做?我的理解是任务的依赖将在任务运行之前完成,并且一个依赖只会运行一次,即使它是多个任务的依赖。

var gulp = require('gulp');
var gulpLoadPlugins = require('gulp-load-plugins');
var plugins = gulpLoadPlugins();
var del = require('del');

gulp.task('default', ['css', 'js', 'fonts']);

gulp.task('clean', function(cb) {
  del(['dist/**'], cb);
});

gulp.task('css', ['clean'], function() {
  return gulp.src('style.css')
            .pipe(plugins.autoprefixer({
              browsers: ['last 2 versions']
            }))
            .pipe(gulp.dest('dist'))
            .pipe(plugins.minifyCss({
              noRebase: true,
              keepSpecialComments: 0
            }))
            .pipe(plugins.rename({extname: '.min.css'}))
            .pipe(gulp.dest('dist'));
});

gulp.task('js', ['clean'], function() {
  return gulp.src('scripts.js')
            .pipe(gulp.dest('dist'))
            .pipe(plugins.uglify({preserveComments: 'some'}))
            .pipe(plugins.rename({extname: '.min.js'}))
            .pipe(gulp.dest('dist'));
});

gulp.task('fonts', ['clean'], function() {
  return gulp.src('fonts/*')
            .pipe(gulp.dest('dist/fonts'));
});

更新: Gulp 输出表明 clean 任务在其他任务开始之前完成,但有时并非所有输出文件都在 dist 目录中。有时他们是。

[09:47:15] Using gulpfile /Users/raddevon/Documents/projects/AlphaBlog/theme/gulpfile.js
[09:47:15] Starting 'clean'...
[09:47:15] Finished 'clean' after 8.06 ms
[09:47:15] Starting 'css'...
[09:47:15] Starting 'js'...
[09:47:16] Starting 'fonts'...
[09:47:16] Finished 'js' after 399 ms
[09:47:16] Finished 'css' after 899 ms
[09:47:16] Finished 'fonts' after 267 ms
[09:47:16] Starting 'default'...
[09:47:16] Finished 'default' after 7.78 μs

最佳答案

使用del.sync(),其他任务只会在clean任务完成后才开始。

gulp.task('clean', function () {
    del.sync(['./build/**']);
});

同时检查这个线程: How to clean a project correctly with gulp?

关于javascript - 为什么 Gulp 在运行依赖它的任务之前没有完成我的 'clean' 任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28112810/

相关文章:

将 Gulp Uglify 与 js 数组一起使用时出现 Javascript 错误

javascript - Laravel 缩小 css 和 js 文件

javascript - 如何调试 gulpfile.js

javascript - React 中的闭包

javascript - RequireJS 在 IE9 中不工作

javascript - 从同一类的所有选择框中删除选项,但单击的除外

node.js - Gulp 构建无法正常工作,因为当 NODE_ENV=生产时未安装 devDependency

concatenation - 有没有办法重写 HTML 以使用 gulp-minified CSS

javascript - 为什么我的 JSON.stringify() 不能与 localstorage.setItem() 一起使用?

javascript - 为 MongoDB 查询结果创建表