Gulpタスク も動的に切り替えたい、と考えました。ついでに require も動的にできないか、と。
検証
軽い気持ちで検証したら、これはすんなりできてしまったので結果のコードだけ載せておきます。
gulp/tasks/test.js
//testタスク
const test = (done) => {
console.log('hoge');
done();
};
module.exports = test;
コンソールに何かしらの文字列を出力する適当なタスクを作成します。
gulpfile.js
const { series, parallel } = require('gulp');
const task1 = require('./gulp/tasks/task1');
const task2 = require('./gulp/tasks/task2');
// dynamic import test
const taskFlag = false;
let testTask;
if (taskFlag) {
testTask = require('./gulp/tasks/test');
// test
exports.test = testTask;
}
// build
const taskBuild = taskFlag ? parallel(task1, task2, testTask) : parallel(task1, task2);
// default
exports.default = series(taskBuild);
gulpfile.js
にこのように書いてみました。
taskFlag
により以下を切り替えますgulp/tasks/test.js
をrequire
するかどうかexports.test
としてexports
するか- 通常のタスク(他の
task1
,task2
のようなタスクと parallel で実行)の配列に加えるか否か
これで実行してみたところ、taskFlag
が true
の場合も false
の場合もエラーにならずに、普通に処理できました。
require
とか exports
は普通に if
文 の中に入れられるのですね。