我正在尝试根据变量的值有条件地传输文件流,以此作为定义两个单独的构建环境(即。开发和生产)。
一些任务可以使用命令行标志单独运行,例如:gulp scripts --env production
然后执行一些仅用于生产的流水线步骤:
gulp.task('scripts', function() {
var jsFilter = filter(['*.js']),
appFiles;
return gulp.src(appFiles)
.pipe(jsFilter)
.pipe(concat('application-build.js'))
.pipe(gulpif(env === 'production', uglify()))
.pipe(size())
.pipe(gulpif(env === 'production', gulp.dest('dist/js'), gulp.dest('tmp/js')))
.pipe(browserSync.reload({ stream: true }));
});
我有一个build
任务,它调用许多其他任务作为依赖项(例如,包括这个scripts
任务)。我希望这个build
任务在运行任务依赖项之前分配一个变量(在本例中为env
)。这意味着:
gulp.task('build', ['scripts', 'styles', 'otherstuff'], function() {
env = 'production';
}
不起作用,因为依赖项在任务主体之前运行。
我目前已经用gulp.start
实现了它
gulp.task('build', function() {
env = 'production';
gulp.start('scripts');
});
But the .start
method isn't actually part of gulp's public API - it comes from Orchestrator -并不打算用来做任何事情。另外,API中的等效方法gulp.run
不久前就被弃用了。
所以我想知道--有没有其他方法可以在运行依赖项之前在任务中分配变量?
(或者,也许有更好的方法来实现像用gulp构建环境这样的东西?)
https://stackoverflow.com/questions/27253597
复制相似问题