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 を置き換えるのではなく、背景の例のようにアプリ直下の各モジュールツリーに対して別のツリーのモジュールを呼び出すところだけ使うと良いでしょう。