задачу 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);
}
Другие вопросы по тегам