2014-09-27 13 views
38

Negli esempi online che mostrano l'utilizzo di gulp, alcune attività restituiscono lo stream e altre no.Un'attività di gulp deve restituire qualcosa?

Ad esempio, senza un ritorno:

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

E lo stesso codice, con un ritorno:

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

E 'necessario restituire il flusso?

risposta

35

Se non si restituisce uno stream, il risultato asincrono di ciascuna attività non sarà atteso dal relativo chiamante, né alcuna attività dipendente.

Ad esempio, quando non tornare torrenti:

$ 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 

Nota qui che il compito scripts dipende il compito tsc. Segnala che tsc termina in 13 millisecondi, il che è decisamente troppo veloce per poter essere ragionevolmente creduto. Quindi l'attività scripts sembra essere avviata e completata, sempre in un periodo di tempo molto breve. Infine, inizia l'operazione effettiva eseguita da tsc. Chiaramente né tscscripts hanno atteso il completamento della fase di compilazione.

Quando queste attività restituiscono i loro flussi, l'uscita sembra piuttosto diversa:

$ 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 

Ecco la sequenza ha un senso, e le durate riportati soddisfare le aspettative.

+7

Cosa succede se si dispone di un'attività di gulp asincrona ma non di flussi? Puoi chiamare una funzione 'done()' o restituire una promessa? – Bill

+1

È possibile definire l'attività in modo che accetti una funzione di callback come parametro finale, oppure è possibile restituire una promessa. Vedi qui: https://github.com/gulpjs/gulp/blob/v3.9.1/docs/API.md#gulptaskname--deps-fn –

Problemi correlati