require.main === module
でそのスクリプトがモジュールとして読み込まれたのか、直接 Node から実行されたのかを判定できるようだ。
module.exports = function () {};
if (require.main === module) {
// 直接実行された場合実行される
console.log("this is not module.");
} else {
// モジュールとして読み込まれた場合実行される
console.log("this is module.");
}
これがわかると例えば Express の app オブジェクトをデーモン化するツールに渡した場合と直接実行した場合の両方でうまく実行することができる。
var express = require("express");
var app = module.exports = express();
....
if (require.main === module) {
app.listen(3000);
}
使いどころがありそうなので覚えておきたい。