2014-09-27 1 views
38

꿀꺽 꿀꺽 사용을 보여주는 온라인 예제에서 일부 작업은 스트림을 반환하고 다른 작업은 그렇지 않습니다. 복귀와꿀꺽 마는 일은 아무것도 돌려 주어야합니까?

gulp.task('tsc', function() 
{ 
    gulp.src('**/*.ts') 
     // ... 
}); 

그리고 같은 코드 : 반환하지 않고 예를 들어

,

gulp.task('tsc', function() 
{ 
    return gulp.src('**/*.ts') 
     // ... 
}); 

는 스트림을 반환 할 필요가 있습니까?

답변

35

스트림을 반환하지 않으면 각 작업의 비동기 결과가 호출자 나 종속 작업에서 기다리지 않습니다.

예를 들어

, 반환하지 스트림 다음 scripts 작업이 tsc 작업에 따라 달라 여기

$ gulp scripts 
[21:25:05] Using gulpfile ~/my-project/gulpfile.js 
[21:25:05] Starting 'tsc'... 
[21:25:05] Finished 'tsc' after 13 ms 
[21:25:05] Starting 'scripts'... 
[21:25:05] Finished 'scripts' after 10 ms 
[21:25:05] Compiling TypeScript files using tsc version 1.0.1.0 

참고. 그것은 tsc가 13 밀리 초에 완료되었다고보고합니다. 이것은 확실히 합리적으로 믿기에는 너무 빠릅니다. 그런 다음 scripts 작업이 시작되어 매우 짧은 시간 내에 완료됩니다. 마지막으로 tsc에 의해 수행 된 실제 작업이 시작됩니다. 분명히 tsc도 아니고 scripts도 컴파일 단계가 완료되기를 기다리지 않았습니다. 이러한 작업들은 스트림을 반환 할 때

는 출력이 다소 달라 보이는 : 여기

$ gulp scripts 
[21:42:25] Using gulpfile ~/my-project/gulpfile.js 
[21:42:25] Starting 'tsc'... 
[21:42:25] Compiling TypeScript files using tsc version 1.0.1.0 
[21:42:32] Finished 'tsc' after 6.65 s 
[21:42:32] Starting 'scripts'... 
[21:42:32] Finished 'scripts' after 204 ms 

순서가 의미가하고,보고 기간이 기대를 충족.

+7

비동기이지만 스트림을 포함하지 않는 꿀꺽 거리기 작업이 있다면 어떻게해야합니까? 'done()'함수를 호출하거나 약속을 반환 할 수 있습니까? – Bill

+1

최종 매개 변수로 콜백 함수를 허용하도록 작업을 정의하거나 약속을 반환 할 수 있습니다. 여기를 참조하십시오 : https://github.com/gulpjs/gulp/blob/v3.9.1/docs/API.md#gulptaskname--deps-fn –