2014-02-21 52 views
6

我有我要处理3级的任务,当这3个任务都做了我想做到以下几点:链连续任务

  1. 的毗连三个文件一起
  2. 丑化
  3. 写入磁盘

With 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个中间文件只有那么Concat的那些。

于是,我又试图:

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

我迷路了。达到此目的的最佳方式是什么?

回答

3

使用事件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')); 
});