我試圖有條件地基於變量的值來管理文件流,以此來定義兩個獨立的構建環境(即開發和生產)。在運行依賴關係之前,是否可以在吞食任務中分配一個變量?
有些任務可以單獨使用命令行標誌,像這樣運行: 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 - 它comes from Orchestrator - 並且不打算使用任何東西。另外,等效方法gulp.run
從前不久被棄用。
所以我想知道 - 有沒有另一種方式,我可以在運行其依賴關係之前分配任務中的變量?
(或者,也許有對實施一口類似構建環境更好的辦法?)
謝謝!我喜歡這種方法好得多。快速的問題 - (我知道這是用在'run-sequence'的文檔中,但爲什麼最後會有回調? – wisew 2014-12-02 19:33:07
由於吞吐任務是異步的,回調讓吞噬知道任務完成。如果任務被聲明爲另一個任務的依賴關係,那麼這是必需的。 – 2014-12-02 21:12:47
我們是否需要'set-production'任務,我們不能直接在運行序列之前設置env變量嗎? – 2016-03-10 16:36:29