Подтвердить что ты не робот

Задача gulp должна вернуть что-нибудь?

В онлайн-примерах, показывающих использование gulp, некоторые задачи возвращают поток, а другие - нет.

Например, без возврата:

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

И тот же код с возвратом:

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

Нужно ли возвращать поток?

4b9b3361

Ответ 1

Если вы не вернете поток, то асинхронный результат каждой задачи не будет ожидаться его вызывающим абонентом и никакими зависимыми задачами.

Например, когда не возвращаются потоки:

$ 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

Обратите внимание, что задача scripts зависит от задачи tsc. Сообщается, что 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

Здесь последовательность имеет смысл, и заявленная продолжительность соответствует ожиданиям.