【问题标题】:Chain sequential tasks [duplicate]链式顺序任务[重复]
【发布时间】:2014-03-23 13:05:09
【问题描述】:

我有 3 个任务要处理,当这 3 个任务完成后,我想执行以下操作:

  1. 将三个文件合并在一起
  2. 丑化
  3. 写入磁盘

对于Grunt,我经历了漫长的过程。这是我尝试过的Gulp

gulp.task('libs', function () {
return gulp.src('js/libs/*.js')
        .pipe(concat('01.libs.js', {newLine: ';'}))
        .pipe(gulp.dest('min'));
});

gulp.task('plugins', function () {
    return gulp.src('js/plugins/*.js')
            .pipe(concat('02.plugins.js', {newLine: ';'}))
            .pipe(gulp.dest('min'));
});

gulp.task('apps', function () {
    return gulp.src('js/apps/**/*.js')
            .pipe(concat('03.apps.js', {newLine: ';'}))
            .pipe(gulp.dest('min'));
});

gulp.task('scripts', ['libs', 'plugins', 'apps'], function () {
    return gulp .src('min/*.js')
            .pipe(concat('testFile.js', {newLine: ';\r\n'}))
            .pipe(rename({suffix: '.min.v' + pkg.version }))
            .pipe(gulp.dest('min'))
            .pipe(notify({ message: 'Scripts minified'}));
});

这可行,但我只想流式传输输出,而不是只写出 3 个中间文件然后连接它们。

于是我尝试了:

function libs () {
    return gulp.src('js/libs/*.js')
            .pipe(concat('01.libs.js', {newLine: ';'}));
}

function plugins () {
    return gulp.src('js/plugins/*.js')
            .pipe(concat('02.plugins.js', {newLine: ';'}));
}

function apps () {
    return gulp.src('js/apps/**/*.js')
            .pipe(concat('03.apps.js', {newLine: ';'}));
}

那么我的build 将是:

gulp.task('build', function () {
    return libs()
        .pipe(plugins())
        .pipe(apps())
        .pipe(concat('TestFile.js', {newLine: ';\r\n'}))
        .pipe(rename({suffix: '.min.v' + pkg.version }))
        .pipe(gulp.dest('min'));
});

这不起作用。

所以我尝试了Q

function allOfThem () {
    return Q.all(libs(), plugins(), apps());
}

gulp.task('build', function () {
    return allOfThem().then(function (one, two, three) {
        console.log(one, two, three);
    });
});

我猜这可行,但then 的回调中没有数据。

我迷路了。实现这一目标的最佳方法是什么?

【问题讨论】:

    标签: node.js q gulp


    【解决方案1】:

    使用 event-stream.merge

    var es = require('event-stream');
    gulp.task('build', function () {
        return es.merge(libs(), plugins(), apps())
            .pipe(concat('TestFile.js', {newLine: ';\r\n'}))
            .pipe(rename({suffix: '.min.v' + pkg.version }))
            .pipe(gulp.dest('min'));
    });
    

    【讨论】:

      猜你喜欢
      • 2013-02-19
      • 2011-08-03
      • 2020-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-15
      • 1970-01-01
      相关资源
      最近更新 更多