Я организовал свои задачи в файле, подобном вашему, но используя импорт/экспорт ES6.
пример: я имею задачи чистые, сценарии и gulpfile.babel.js, содержание следующее: tasks/clean.js
:
import promisedDel from 'promised-del';
let cleanTaskCreator = (config) => {
let task = (done) => {
return promisedDel((typeof config.path === 'string' ? [config.dest] : config.dest));
};
task.displayName = 'clean:' + config.name;
task.description = 'clean task for ' + config.name;
return task;
};
export default cleanTaskCreator;
tasks/scripts.js
:
import gulp from 'gulp';
import named from 'vinyl-named';
import webpack from 'webpack-stream';
import {scripts as config} from '../config.js';
import clean from "./clean";
let scripts =() => {
return gulp.src(config.entries)
.pipe(named())
.pipe(webpack(config.webpackConfig))
.pipe(gulp.dest(config.dest));
};
scripts.displayName = 'scripts';
scripts.description = 'generation of scripts assets';
if(process.env.NODE_ENV !== 'production') {
let realScripts = scripts;
scripts = gulp.series(clean(config), realScripts);
scripts.displayName = 'clean&scripts';
scripts.description = 'clean scripts and ' + scripts.description;
}
export default scripts;
и, наконец, gulpfile.babel.js
:
import * as gulp from "gulp"
import scripts from "./gulp/tasks/scripts";
gulp.task(scripts);
let defaultTask = gulp.series(scripts);
defaultTask.displayName = 'default';
defaultTask.description = 'default';
gulp.task(defaultTask);
каждая задача предоставляет исполняемую функцию и внутренне определяет всю ее зависимость (как вы можете видеть на сценариях задач, где, если мы на производстве, мы очищаем активы до поколений). Затем главный файл импортирует только эти функции и определяет основную задачу (классический по умолчанию) и другие задачи, доступные из командной строки.
Я не уверен, что это лучший режим (или правильный) для организации проекта (большого или малого) с помощью gulp4, но для меня этот макет в порядке.
В конце, такие модули, как gulp-load-subtasks, не работают на gulp4, потому что он загружает скрипты в порядке имени файла (как вы указали).
Просьба указать [минимальный, завершающий и проверяемый пример] (http://stackoverflow.com/help/mcve). –