比方說,我有這樣的事情:傳遞一個參數來一飲而盡任務時,其他任務取決於它
var gulp = require("gulp"),
argv = require("yargs").argv;
gulp.task("config", function (cb) {
"use strict";
if (argv.ftp) {
console.log("Reading FTP settings...");
} elseif (argv.sync) {
console.log("Reading Sync settings..."):
}
});
gulp.task("ftp", ["config"], function(cb) {
console.log("FTPing...");
});
gulp.task("sync", ["config"], function(cb) {
console.log("Syncing...");
});
這裏的想法:
- 用戶運行
gulp ftp
,依靠gulp config
。 gulp-config
檢查config.json
中與ftp
相關的一些值,並提示用戶輸入缺少的任何內容。gulp ftp
然後繼續它的任務。
或者,
- 用戶運行
gulp sync
,這依賴於gulp config
。 gulp-config
檢查config.json
中與sync
相關的一些值,並提示用戶輸入缺少的任何內容。gulp sync
然後繼續執行它的任務。
我有這一切都工作得很好,但爲了得到config
任務,無論是ftp
或sync
的依賴正常工作,我必須跑gulp ftp --ftp
或gulp sync --sync
。我想要做的是告訴gulp config
,如果它作爲gulp ftp
的依賴項運行,則假定--ftp
標誌,並且它作爲gulp sync
的依賴項運行,則假定--sync
標誌。
所以我的問題是,有沒有辦法告訴當一個吞噬任務是另一個的依賴?當gulp-config
由於依賴於gulp-ftp
而運行時,有沒有辦法在gulp-config
開始時檢查?
更新1:我有想法,這樣做if (argv.ftp || config === "ftp")
,其中config
是獲取無論是在ftp
或sync
任務設置一個全局變量,但後來我意識到,不會因爲工作直到config
任務完成後,變量纔會被設置。我會繼續研究......
我不知道你的問題的直接答案,但我認爲你的問題可以通過一些重構來解決。你想試一下嗎? :) – qtuan
是的,我正在尋找外部化我用來寫入'config.json'的兩個函數,我覺得我可能會繼續更新,因爲我會取得進展。 – JacobTheDev