使用 gulp 对任务进行排序
Posted
技术标签:
【中文标题】使用 gulp 对任务进行排序【英文标题】:Sequencing tasks with gulp 【发布时间】:2015-03-24 12:12:35 【问题描述】:我有点不知所措。根据文档,为了获得顺序执行,我应该从我的任务中返回流,所以我尝试为我的 gulpfile 执行以下操作。但据我所知,有一个竞争条件。一半时间我得到 ENOENT,lstat 错误,另一半成功了,但是我的 deployDir 有奇怪的文件夹名称和丢失的文件。我错过了什么吗?这有什么诀窍吗?
var gulp = require('gulp'),
filter = require('gulp-filter'),
mainBowerFiles = require('main-bower-files'),
del = require('del'),
inject = require("gulp-inject"),
uglify = require('gulp-uglifyjs');
var config =
bowerDir: 'src/main/html/bower_components',
cssDir: 'src/main/html/css/lib',
fontsDir: 'src/main/html/fonts/lib',
imgDir: 'src/main/html/img/lib',
jsDir: 'src/main/html/js/lib',
deployDir: 'src/main/resources/html'
;
gulp.task('default', ['clean', 'bowerdeps', 'dev']);
gulp.task('clean', function()
return del([
config.cssDir,
config.fontsDir,
config.jsDir,
config.deployDir
]);
);
gulp.task('dev', function()
return gulp
.src(['src/main/html/**', '!src/main/html/bower_components,bower_components/**'])
.pipe(gulp.dest(config.deployDir));
);
gulp.task('bowerdeps', function()
var mainFiles = mainBowerFiles();
if(!mainFiles.length) return; // No files found
var jsFilter = filterByRegex('.js$');
var cssFilter = filterByRegex('.css$');
var fontFilter = filterByRegex('.eot$|.svg$|.ttf$|.woff$');
return gulp
.src(mainFiles)
.pipe(jsFilter)
.pipe(gulp.dest(config.jsDir))
.pipe(jsFilter.restore())
.pipe(cssFilter)
.pipe(gulp.dest(config.cssDir))
.pipe(cssFilter.restore())
.pipe(fontFilter)
.pipe(gulp.dest(config.fontsDir));
);
// Utility Functions
var filterByRegex = function(regex)
return filter(function(file)
return file.path.match(new RegExp(regex));
);
;
【问题讨论】:
How to run Gulp tasks sequentially one after the other的可能重复 【参考方案1】:依赖项始终并行运行:['clean', 'bowerdeps', 'dev']
。
https://github.com/gulpjs/gulp/blob/master/docs/recipes/running-tasks-in-series.md
您可以使用run-sequence 对任务进行排序。
其他事情:del 不返回流。改用回调:
gulp.task('clean', function(cb)
del([
config.cssDir,
config.fontsDir,
config.jsDir,
config.deployDir
], cb);
);
【讨论】:
以上是关于使用 gulp 对任务进行排序的主要内容,如果未能解决你的问题,请参考以下文章
9.2.1 hadoop mapreduce任务输出的默认排序