expressで、テスト用にappインスタンスだけ取得したいけど、app.listenを同じファイルに書きたいって!!いう状況に陥った。
(app.jsとbin/wwwみたいに分けるのがベストっぽいけど、あまり好きじゃない。)
require.mainとmoduleで判別
requireされ、モジュールとして動いてるときは、require.main !== module
単体で起動されているときは、require.main === moduleとなる。
コード化
sample.js
if (require.main === module) {
console.log('直接起動されたよ!');
} else {
console.log('requireされて、モジュールとして動いてるよ!');
}