requireするモジュールにデータを渡して挙動を変える

下記のような引数があるモジュールを定義

// test.js
module.exports = msg => {
    console.log(msg);
};

引数付きで呼び出せば実行される。

require("test.js")("welcome message");

 

関数として使いたい場合は下記のように定義

// test.js
module.exports = msg => {
    module.showMessage = () => {
        console.log(msg);
    };

    return module;
};

requireして実行してやれば良い

const test = require("test.js")("welcome message");
test.showMessage();