首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不等待另一个任务,也不串联运行的任务

不等待另一个任务,也不串联运行的任务
EN

Stack Overflow用户
提问于 2015-03-10 06:52:06
回答 1查看 1.4K关注 0票数 1

我有以下的吞咽文件:

代码语言:javascript
复制
'use strict';

var gulp = require('gulp');
var jshint = require('gulp-jshint');
var concat = require('gulp-concat');
var uglify = require('gulp-uglify');
var rev = require('gulp-rev');
var usemin = require('gulp-usemin');
var ngmin = require('gulp-ngmin');
var path = require('path');
var rimraf = require('gulp-rimraf');


var bases = {
 app: 'app/',
 dist: 'dist/'
};

var paths = {
  scripts: ['scripts/**/*.js', '!scripts/libs/**/*.js'],
  styles: ['styles/**/*.css'],
  html: ['index.html', '404.html'],
  views: ['views/**/*.html']
};


gulp.task('copy', function() {
  return gulp.src(paths.views, {cwd: bases.app, read:false})
  .pipe(gulp.dest(bases.dist + '/views/'));
});

gulp.task('clean', function() {
  return gulp.src(bases.dist, { read: false }) // much faster
    .pipe(rimraf());
});


gulp.task('usemin', [], function () {
  return gulp.src('./*.html', {cwd: bases.app})
    .pipe(usemin({
      js: [/*uglify(), rev()*/]
    }))
    .pipe(gulp.dest(bases.dist));
});

// Rerun the task when a file changes
gulp.task('watch', function() {
  gulp.watch(path.join(bases.app, paths.scripts[0]), ['usemin']);
});

gulp.task('default', ['clean', 'usemin', 'copy']);

根据文档,像我一样返回一个流,在清理任务中,复制和usemin应该等待清理完成。

正如您从控制台中看到的那样,它们没有

代码语言:javascript
复制
[23:33:22] Starting 'clean'...
[23:33:22] Starting 'usemin'...
[23:33:22] Starting 'copy'...
[23:33:22] Finished 'clean' after 82 ms
[23:33:22] Finished 'copy' after 9.92 ms
[23:33:22] Finished 'usemin' after 200 ms
[23:33:22] Starting 'default'...
[23:33:22] Finished 'default' after 9.76 μs

预期的结果如下:

代码语言:javascript
复制
[23:33:22] Starting 'clean'...
[23:33:22] Finished 'clean' after 82 ms
[23:33:22] Starting 'usemin'...
[23:33:22] Starting 'copy'...
[23:33:22] Finished 'copy' after 9.92 ms
[23:33:22] Finished 'usemin' after 200 ms
[23:33:22] Starting 'default'...
[23:33:22] Finished 'default' after 9.76 μs

那我做错什么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-12 08:54:32

多亏了zaynetro的暗示,我发现了显而易见的.

gulp.task('default', ['clean', 'usemin', 'copy'], function() {})的语法仅仅意味着,默认依赖于干净、usemin和copy,而不管它们的顺序如何。所有这些都将同时处理。

如果您真的想要控制任务的原谅顺序,就必须将其分解为依赖clean的子任务,在我的例子中,themselfs是这样的:

代码语言:javascript
复制
'use strict';

var gulp = require('gulp');
var jshint = require('gulp-jshint');
var concat = require('gulp-concat');
var uglify = require('gulp-uglify');
var rev = require('gulp-rev');
var usemin = require('gulp-usemin');
var ngmin = require('gulp-ngmin');
var path = require('path');
var rimraf = require('gulp-rimraf');


var bases = {
 app: 'app/',
 dist: 'dist/'
};

var paths = {
  scripts: ['scripts/**/*.js', '!scripts/libs/**/*.js'],
  styles: ['styles/**/*.css'],
  html: ['index.html', '404.html'],
  views: ['views/**/*.html']
};


gulp.task('copy', ['clean'], function() {
  return gulp.src(paths.views, {cwd: bases.app, read:false})
  .pipe(gulp.dest(bases.dist + '/views/'));
});

gulp.task('clean', function() {
  return gulp.src(bases.dist, { read: false }) // much faster
    .pipe(rimraf());
});


gulp.task('usemin', ['clean'], function () {
  return gulp.src('./*.html', {cwd: bases.app})
    .pipe(usemin({
      js: [/*uglify(), rev()*/]
    }))
    .pipe(gulp.dest(bases.dist));
});

// Rerun the task when a file changes
gulp.task('watch', function() {
  gulp.watch(path.join(bases.app, paths.scripts[0]), ['usemin']);
});

gulp.task('default', ['usemin', 'copy']);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28957709

复制
相关文章

相似问题

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