задачу gulp для (... in ...) создать правильно?
Что я делаю не так?
gulpfile.js
'use strict';
// Modules & Plugins
var gulp = require('gulp');
const image = require('gulp-image');
var $ = require('gulp-load-plugins')();
let directories = [
'2006/Art1',
'2006/Art2',
'2010/Art1'
];
function gulpTask(directoryName) {
gulp.task('blogmotionAllMedia', function () {
return gulp
.src('src/content/' + directoryName + '/media/*.{jpg,jpeg,png,gif}')
.pipe($.responsive({
'*.jpg': [
{ width: 400, rename: { suffix: '-4' } },
{ rename: { suffix: '-6' } }
],
}))
.pipe(image({
jpegRecompress: true
}))
.pipe(gulp.dest('dist/content/' + directoryName + '/media'))
});
}
var directory;
for (directory in directories) {
gulpTask(directory);
}
запустить задачуnpx gulp gulpTask
неожиданный
Я получаю следующее сообщение об ошибке:
Task never defined: gulpTask
Я все еще привязан к своему прошлому вопросу с ответом (идеей) Miles
2 ответа
Во-первых, задача gulp должна быть зарегистрирована под тем именем, которое вы хотите ее вызвать. gulp.task('blogmotionAllMedia', ...
должно быть gulp.task('gulpTask', ...
. Кроме того, я думаю, вам следует перебирать каталоги внутри задачи.
Кроме того, я думаю, вам нужно объединить полученные потоки с помощью merge-stream поconst merge = require('merge-stream')
а также return merge(directories.map(singleDirectoryGulpTask));
Результат должен выглядеть следующим образом: (Отказ от ответственности: не делал gulp уже много лет. Надеюсь, это поможет)
'use strict';
// Modules & Plugins
var gulp = require('gulp');
const image = require('gulp-image');
var $ = require('gulp-load-plugins')();
const merge = require('merge-stream')
let directories = [
'2006/Art1',
'2006/Art2',
'2010/Art1'
];
gulp.task('gulpTask', function () {
function singleDirectoryGulpTask(directoryName) {
return gulp
.src('src/content/' + directoryName + '/media/*.{jpg,jpeg,png,gif}')
.pipe($.responsive({
'*.jpg': [
{ width: 400, rename: { suffix: '-4' } },
{ rename: { suffix: '-6' } }
],
}))
.pipe(image({
jpegRecompress: true
}))
.pipe(gulp.dest('dist/content/' + directoryName + '/media'));
}
return merge(directories.map(singleDirectoryGulpTask));
});
Изменить:
for (directory in directories) {
gulpTask(directory);
}
кому:
for (directory of directories) {
gulpTask(directory);
}