我有以下的吞咽文件:
'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应该等待清理完成。
正如您从控制台中看到的那样,它们没有
[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预期的结果如下:
[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那我做错什么了?
发布于 2015-03-12 08:54:32
多亏了zaynetro的暗示,我发现了显而易见的.
gulp.task('default', ['clean', 'usemin', 'copy'], function() {})的语法仅仅意味着,默认依赖于干净、usemin和copy,而不管它们的顺序如何。所有这些都将同时处理。
如果您真的想要控制任务的原谅顺序,就必须将其分解为依赖clean的子任务,在我的例子中,themselfs是这样的:
'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']);https://stackoverflow.com/questions/28957709
复制相似问题