https://github.com/tilfin/reqroot の紹介
背景
ある程度大きな Node.js アプリになると、モジュールの require で models/aaa
から require('../utils/foo')
や routes/bbb
から require('../models/entry')
のような指定が増えてきて、深いといくつ上の階層に戻るかわかりづらくかったり、リファクタリングで階層が変わると書き換えが面倒になります。
reqroot モジュール
そこで require('../utils/foo')
のような代わりに reqroot('utils/foo')
とアプリルートからのパスでどこからでも読み込めるモジュール reqroot (読み方:リクルート)を作りました。既存の同機能のモジュールはありましたが、毎回そのモジュール自体を require しなくてはならず、global.reqroot
としてグローバルに使えるところが異なります。
設定
- node が最初に読むメインモジュールの先頭で
require('reqroot');
する。 - テスト時も効くように
"test": "mocha -r reqroot"
とpackage.jsonに定義する。
補足
全ての require を置き換えるのではなく、背景の例のようにアプリ直下の各モジュールツリーに対して別のツリーのモジュールを呼び出すところだけ使うと良いでしょう。