【发布时间】:2015-09-01 01:14:28
【问题描述】:
我想用 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."
随着我们从 dev gulp 任务内部调用越来越多的 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 充满了几个不必要的功能。
有没有更好的办法?
【问题讨论】:
-
不太熟悉 gulp,但您是否尝试从
move()本身调用moveViews()和moveJs()? -
我不明白你为什么要通过 gulp 而不是使用
mv或cp来做到这一点??? -
这值得更多关注,这是一个多么好的问题——从那以后你找到了一个可行的解决方案吗?我只是遇到了这个。
-
@DanKanze 我也会对您的意见感兴趣,以获取下面的新答案。
-
你总是知道
dev和prod的路径吗?如果是这样,只需在gulpfile的最高范围内创建一个变量destination,然后在task内设置它。
标签: javascript gulp dry yargs