我遇到了一个问题,我有一个 shell 脚本任务和一些我想按顺序运行的其他任务。我通过包含运行序列插件解决了常规任务的这个问题。但是该插件的问题是每个任务都应该返回一个流,这与我的 shell 任务不同(我不能在其中返回一个流)。我需要在其他人完成后运行我的“打包”任务,所以我尝试了这个选项
gulp.task('pack', ['build'], function () {
shell.task(config.packHtml.cmdLineString)
});
但我的“打包”任务似乎无法正常工作。这是整个代码
var gulp = require('gulp'),
concat = require('gulp-concat'),
runSequence = require('run-sequence'),
order = require('gulp-order'),
replace = require('gulp-replace'),
uglify = require('gulp-uglify'),
combiner = require('stream-combiner2'), //NOTE: alternative to merge-stream
rename = require('gulp-rename'),
shell = require('gulp-shell'),
config = require('./config');
gulp.task('build', function () {
runSequence('concat', 'replace');
});
gulp.task('concat', function () {
var combined = combiner.obj([
gulp.src(config.concat.src),
order(config.concat.order, {base: './'}),
concat(config.concat.fileName),
gulp.dest(config.concat.dest)
]);
combined.on('error', console.error.bind(console));
return combined;
});
gulp.task('replace', function () {
var combined = combiner.obj([
gulp.src([config.replace.dest + '/' + config.replace.fileName]),
replace(config.replace.regExpForInclude, ''),
replace(config.replace.regExpForTarget, ''), //NOTE: make it in 1 regExp
gulp.dest(config.replace.dest)
]);
combined.on('error', console.error.bind(console));
return combined;
});
// gulp.task('pack',
// shell.task(config.packHtml.cmdLineString)
// );
gulp.task('pack', ['build'], function () {
shell.task(config.packHtml.cmdLineString)
});
有什么建议么?我想用一个命令运行所有任务(当然,如果我先运行'build'然后'pack'它会完美运行)。