2014-02-21 84 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')); 
});