這是一個非常簡單的示例,您可以使用gulp-util和gulp-if庫在以這種方式啓動腳本時傳遞參數gulp [taskname] [--settingName settingValue]
。例如:
var gulp = require("gulp"),
gulpUtil = require("gulp-util"),
gulpIf = require('gulp-if');
// Constants
var GULP_CMD_SETTING_A = "A",
GULP_CMD_SETTING_B = "B";
// Setting to be used in tasks
var jsSetting = GULP_CMD_SETTING_A; // Default value
// Init task for setting
gulp.task("cmd-settings", function (done) {
if (gulpUtil.env.settingName === GULP_CMD_SETTING_A) {
// ... logic
jsSetting = GULP_CMD_SETTING_A;
} else if (gulpUtil.env.settingName === GULP_CMD_PARAM_B) {
// ... logic
jsSetting = GULP_CMD_PARAM_B;
}
done();
});
這是所要求的任務需要jsSetting
用它來知道要執行什麼行爲基本任務。
然後在需要jsSetting
的所有任務中,只要確保將"cmd-settings"
任務作爲先決條件。 jsSetting
如何使用示例:
gulp.task("use-cmd-settings", ["cmd-settings"], function() {
return gulp.src(...)
.pipe(...)
.pipe(gulpIf(jsSetting === GULP_CMD_SETTING_A, jshint.reporter(...))
.pipe(gulpIf(jsSetting === GULP_CMD_SETTING_B, concat())
.pipe(...);
}
所有我需要做的就是gulp use-cmd-settings --settingName A
和你有絨毛代碼中的任務,gulp use-cmd-settings --settingName B
你有concats你的代碼(這只是一個例子,沒有任務很多現實生活中的用處):)
編輯:
您也可以使用設置從命令定義相同的任務名稱,但不同或加載具有相同任務的兩個不同的文件之一。
if (gulpUtil.env.settingName === GULP_CMD_SETTING_A) {
// ... logic
jsSetting = GULP_CMD_SETTING_A;
} else if (gulpUtil.env.settingName === GULP_CMD_PARAM_B) {
// ... logic
jsSetting = GULP_CMD_PARAM_B;
}
if (jsSetting === GULP_CMD_SETTING_A) {
// Tasks definition or import from file
} else if (jsSetting === GULP_CMD_SETTING_B) {
// Tasks definition or import from other file
}
當你有一輛載重汽車的任務,並且你想將它們拆分成文件時,這非常有用。兩個文件具有相同的任務(關於責任),但一個用於開發,一個用於生產。
希望它有幫助!