日々精進

新しく学んだことを書き留めていきます

search pathを設定する方法

自分で作ったクラスをrequireで読み込むとき、相対パスを書くのが面倒なので
search pathを設定できないものか、と思っていたらやる方法があった。
process.cwd()はプロジェクトのルートディレクトリ(多分nodeのプロセスのカレントディレクトリ)の絶対パスを取得できる。なのでそこから各ディレクトリへのパスを書けばOK。

exports.initSearchPath = ->
  process.env.NODE_PATH = [
    "#{process.cwd()}/sources"
    "#{process.cwd()}/sources/collections"
    "#{process.cwd()}/sources/models"
  ].join(":")
  require("module")._initPaths()

これでrequire("hoge")とかできる!でも思いっきり非公開なAPIを使ったりしてるので非推奨です。でも便利。
参考:hokaccha.hamalog v2