require.resolve で npm3 に耐える - dev.jgs.me

power-assert がビルトインされたし ava つかってみっか〜とおもって gulp-mochagulp-ava に置き換えてみたらエラった。こいつぁプルリクチャンスだぜーとコード読んだり修正してみたりしたんだけど、解決方法が分からなかったので issue を立ててみたら一瞬で解決して OSS 楽しいなーとおもった。


結局のところ、npm3 だと node_modules が flat になってしまって gulp-ava/node_modules/.bin/ava ではなくプロジェクトルートの node_modules/.bin にエイリアスが張られてしまうことによって引き起こされている。そこで、これを解決するのが [require.resolve ] で、こいつに <パッケージ名/ファイル名> を食わせてやればそいつのファイルパスを返してくれる API なのだー。(知らなかった)

npm の issues を見てると同様の事案が起きてるように見受けられるのでこれで解決できるかもしれない。