Gulpタスク を動的に切り替える

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.jsrequire するかどうか
    • exports.test として exports するか
    • 通常のタスク(他の task1, task2 のようなタスクと parallel で実行)の配列に加えるか否か

これで実行してみたところ、taskFlagtrue の場合も false の場合もエラーにならずに、普通に処理できました。

require とか exports は普通に if文 の中に入れられるのですね。

この記事を書いた人

アバター

アルム=バンド

フロントエンド・バックエンド・サーバエンジニア。LAMPやNodeからWP、Gulpを使ってejs,Scss,JSのコーディングまで一通り。たまにRasPiで遊んだり、趣味で開発したり。