Я хочу сделать что-то простое с помощью gulp. Я хочу написать общий метод для перемещения файлов в выходной каталог из определенного исходного каталога.
притвориться, что у нас что-то вроде этого
var args = require('yargs');
function transform-move-jsx-Development()
{
gulp.src(config.sourceJSX)
.pipe(react, browserify, etc....)
.pipe(gulp.dest(config.output_development));
};
function transform-move-jsx-Production()
{
gulp.src(config.sourceJSX)
.pipe(react, browserify, etc....)
.pipe(gulp.dest(config.output_production));
};
gulp.task('transform-move-jsx-Development', transform-move-jsx-Development);
gulp.task('transform-move-jsx-Production', transform-move-jsx-Production);
gulp.task('prod', [transform-move-jsx-Production]);
gulp.task('dev', ['transform-move-jsx-Development']);
Две задачи: transform-move-jsx-Production и transform-move-jsx-Development идентичны, за исключением выходного каталога. Я хочу сделать его более сухим (не повторяй себя). Я должен иметь возможность сделать один метод, который может использовать параметр yarg или что-то в этом роде? В следующем примере я притворяюсь, что могу передать путь как arg
Итак, я пытаюсь что-то вроде этого использовать yargs
var args = require('yargs');
function transform-move-jsx()
{
return gulp.src(config.sourceJSX)
.pipe(gulp.dest(args.outputDirectory));
};
gulp.task('dev', ['transform-move-jsx']);
Однако теперь мне нужно добавить аргументы в вызов gulp в командной строке
gulp dev --"path to output, etc."
Это, очевидно, менее обслуживаемо, поскольку мы вызываем все больше задач gulp изнутри задачи dev gulp. И в любом случае будет беспорядочно, поскольку нам не нужно знать детали реализации, как то, что структура выходного каталога при запуске gulp dev
Вместо этого я мог бы сделать что-то вроде этого:
function transform-move-jsx(destination)
{
return gulp.src(config.sourceJSX)
.pipe(gulp.dest(destination));
};
function transform-move-jsx-Development()
{
transform-move-jsx("./output/development/");
};
function transform-move-jsx-Production()
{
transform-move-jsx("./output/production/");
};
gulp.task('transform-move-jsx-Development',transform-move-jsx-Development);
gulp.task('transform-move-jsx-Production', transform-move-jsx-Production);
gulp.task('prod', transform-move-jsx-Production);
gulp.task('dev', transform-move-jsx-Development);
Это кажется лучше в том, что он более гибкий, однако теперь мой gulpfile завален несколькими ненужными функциями.
Есть ли лучший способ?