2014-02-21 4 views
6

내가 처리 할 3 개 작업이 그 3 작업이 완료되면 나는 다음을 수행 할 : 함께 체인 연속 작업

  • 세 개의 파일을 디스크에 추하게는
  • 쓰기 CONCAT

    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'})); 
    }); 
    

    이 작동하여 시도했지만 난 그냥 출력을 스트리밍보다는 그 CONCAT에만 다음 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에 대한 콜백에서 작동하지만 데이터를 같아요.

    나는 분실했습니다. 이것을 달성하는 가장 좋은 방법은 무엇입니까?

  • 답변

    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')); 
    });