Я хочу сделать что-то простое, используя 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 или что-то в этом роде? В следующем примере я притворяюсь, что могу передать путь как аргумент
Итак, я пробую что-то подобное, используя 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 замусорен несколькими ненужными функциями.
Есть ли способ лучше ?
moveViews()
иmoveJs()
из самогоmove()
? - person joyBlanks   schedule 01.09.2015mv
илиcp
??? - person Mathletics   schedule 01.09.2015dev
иprod
? Если это так, просто создайте переменнуюdestination
в самой верхней области вашегоgulpfile
и установите ее изtask
. - person Mudlabs   schedule 05.11.2020