シェルスクリプトのタスクと、順番に実行したい他のいくつかのタスクがあるという問題に遭遇しました。run-sequence プラグインを含めることで、通常のタスクでこの問題を解決しました。しかし、そのプラグインの問題は、すべてのタスクがストリームを返す必要があることです。これは、シェルのタスクには当てはまりません (ストリームを返すことはできません)。他のタスクが完了した後に「pack」タスクを実行する必要があるため、このオプションを試しました
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)
});
助言がありますか?1 つのコマンドですべてのタスクを実行したい (もちろん、最初に「ビルド」を実行してから「パック」を実行すると、完全に機能します)。