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文 の中に入れられるのですね。