gulp@4 задачи с серией / параллелью выполняются несколько раз
С этим кодом в моем gulpfile:
var gulp = require('gulp');
var pkg = require('./package.json');
var zip = require('gulp-zip');
var zipDist = () =>
gulp
.src('dist/**/*')
.pipe(zip(`${pkg.name.replace('@relax/', '')}.dist.zip`))
.pipe(gulp.dest('./'));
var zipFonts = () =>
gulp
.src('dist/fonts/*')
.pipe(zip(`${pkg.name.replace('@relax/', '')}.fonts.dist.zip`))
.pipe(gulp.dest('./'));
var zipIcons = () =>
gulp
.src(['dist/icons/*', 'dist/loaders/*', 'dist/sprites/*'])
.pipe(zip(`${pkg.name.replace('@relax/', '')}.icons.dist.zip`))
.pipe(gulp.dest('./'));
var zip = gulp.series(zipDist, zipFonts, zipIcons);
gulp.task('zip', gulp.series(zipDist, gulp.parallel(zipFonts, zipIcons)));
И работает залпом
$ gulp zip
Я получаю этот результат:
$ gulp zip
[21:41:45] Using gulpfile ~/project/packages/core/gulpfile.js
[21:41:45] Starting 'zip'...
[21:41:45] Starting 'zipDist'...
[21:41:45] Finished 'zipDist' after 201 ms
[21:41:45] Starting 'zipFonts'...
[21:41:45] Starting 'zipDist'...
[21:41:45] 'zipFonts' errored after 1.48 ms
[21:41:45] TypeError: Cannot read property 'on' of undefined
at DestroyableTransform.Readable.pipe (/home/alexander/project/packages/core/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js:564:8)
at zipFonts (/home/alexander/project/packages/core/gulpfile.js:181:6)
at bound (domain.js:301:14)
at runBound (domain.js:314:12)
at asyncRunner (/home/alexander/project/packages/core/node_modules/async-done/index.js:55:18)
at _combinedTickCallback (internal/process/next_tick.js:131:7)
at process._tickDomainCallback (internal/process/next_tick.js:218:9)
[21:41:45] 'zip' errored after 204 ms
[21:41:45] The following tasks did not complete: zipDist
[21:41:45] Did you forget to signal async completion?
Версии:
$ gulp -v
[15:22:45] CLI version 2.0.1
[15:22:45] Local version 4.0.0
Почему zipDist
бегать дважды? Если я сделаю это:
gulp.task('zip', zipDist);
Он запускается один раз, но мне нужно выполнить две другие задачи.
РЕДАКТИРОВАТЬ:
Я добавил более полный вывод с ошибкой. Сначала я подумал, что это не имеет значения. Я удалил оскорбительный код, и журнал говорит, что все в порядке. Кажется, что если в задании возникла ошибка, gulp хочет повторить попытку? Это по замыслу?
Для тех, кто заинтересован, я подал вопрос об этом gulp-zip
ошибка здесь: https://github.com/sindresorhus/gulp-zip/issues/105
1 ответ
Я начал конвертировать var
с const
и эврика! Оскорбительный код был:
var zip = require('gulp-zip');
...
var zipDist = () => gulp.src(..).pipe(zip(...))
...
var zip = gulp.series(zipDist, ...);
zip
был объявлен два раза.. лицевой