Gulp按顺序工作

时间:2015-08-28 12:18:56

标签: javascript node.js gulp gulp-shell

我遇到了一个问题,我有一个shell脚本的任务和我想要按顺序运行的其他一些任务。我通过包含run-sequence插件解决了常规任务的这个问题。但是插件的问题是每个任务都应该返回一个流,而我的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'然后'打包'它将完美地工作)。

0 个答案:

没有答案