[javascript] Gulp.js 작업, src로 돌아 갑니까?

나는 꿀꺽 마시기 시작하고 예제 설정을 살펴 보았습니다. 어떤 사람들은 다음과 같은 구조를 가지고 있습니다 :

gulp.task("XXXX", function() {
    gulp.src("....

다른 사람들은 이것을 가지고 있습니다 :

gulp.task("XXXX", function() {
   return gulp.src("....

src 의 수익이 어떻게 다른지 궁금 합니다.



답변

당신은 return작업이 비동기 있음을 나타냅니다. gulp.src()스트림을 반환하므로 비동기입니다.

그것이 없으면 작업 시스템은 언제 끝났는지 알 수 없습니다. 문서를 읽으십시오 .


답변

종속 작업이 있는 경우 작업을 실행하기 전에 해당 작업이 종속 작업이 완료 될 때까지 기다리려면 스트림 을 반환 해야 합니다.

예 :

// without return
gulp.task('task1', function() {
    gulp.src('src/coffee/*.coffee')
      /* eg compile coffeescript here */
     .pipe(gulp.dest('src'));
});

gulp.task('task2', ['task1'], function() {
    gulp.src('src/*.js')
      /* eg minfify js here */
     .pipe(gulp.dest('dest'));
});

이 예제 에서는 task2 가 실행 되기 전에 task1 이 완료 될 것으로 예상 됩니다 (예 : coffeescript 또는 무엇이든 컴파일) . 그러나 아래 예제와 같이 return 을 추가 하지 않으면 비동기식으로 비동기식으로 실행됩니다. task2 는 태스크 1이 완료되기를 기다리지 않았 으므로 task1 의 컴파일 된 출력을 선택하지 않기 때문에 컴파일 된 coffeescript는 축소 되지 않습니다 . 따라서 우리는 항상 이런 상황에서 돌아와야합니다.

// with return
gulp.task('task1', function() {
    return gulp.src('**/*.coffee')
      /* your operations here */
     .pipe(gulp.dest('dest'));
});

gulp.task('task2', ['task1'], function() {
    return gulp.src('**/*.js')
      /* your operations here */
     .pipe(gulp.dest('dest'));
});

편집 : 여기의 레시피가 자세히 설명합니다. https://github.com/gulpjs/gulp/blob/master/docs/recipes/running-tasks-in-series.md


답변

작업 당 여러 스트림이있는 경우이 기능이 유용하다는 것을 알았습니다. 여러 스트림을 결합 / 병합하여 반환해야합니다.

var gulp = require('gulp');
var merge = require('gulp-merge');

gulp.task('test', function() {
    var bootstrap = gulp.src('bootstrap/js/*.js')
        .pipe(gulp.dest('public/bootstrap'));

    var jquery = gulp.src('jquery.cookie/jquery.cookie.js')
        .pipe(gulp.dest('public/jquery'));

    return merge(bootstrap, jquery);
});

Gulps 작업 정의 구조를 사용하는 대안은 다음과 같습니다.

var gulp = require('gulp');

gulp.task('bootstrap', function() {
    return gulp.src('bootstrap/js/*.js')
        .pipe(gulp.dest('public/bootstrap'));
});

gulp.task('jquery', function() {
    return gulp.src('jquery.cookie/jquery.cookie.js')
        .pipe(gulp.dest('public/jquery'));
});

gulp.task('test', ['bootstrap', 'jquery']);


답변