プロジェクトによりnodenvとndenvを切り替える

最近、プロジェクトにより「nodenv」を利用しているプロジェクトと「ndenv」を利用しているプロジェクトがあり使い分けがうまくいかないという問題がよく発生するようになりました。

最初に説明しておくと本記事は「nodenv」と「ndenv」を切り替えるのではなく、.node-versionファイルに記述されているバージョンのnodeを起動する方法です。タイトル詐欺ですね。

何が問題なのか

前提として「nodenv」と「ndenv」では.node-versionに記載されるバージョンの表記が違います。

ndenvを利用して

ndenv local v8.5.0

のコマンドで生成される.node-versionには「v8.5.0」とバージョン情報が記載されます。

nodenvを利用した場合

nodenv local 8.5.0

のコマンドで生成される.node-versionには「8.5.0」とバージョン情報が記載されます。

これにより複数のプロジェクトを横断している場合に、nodenvでバージョン指定されたものはnodenvでしか起動できず、ndenvで指定されたものはndenvでしか起動できないという現象になってしまいます。

しかし、nodeのエイリアスに指定できるのはどちらかだけなので、切り替えるとなると.bash_profileを書き換えるどの手間をかけないとプロジェクト毎のバージョン指定の恩恵を受けることができません。

対応方法は

対応方法はndenvは実はv付きの.node-versionとvなしの.node-versionの両方をインストールすることができます。

ndenv install v8.5.0
ndenv install 8.5.0

そして、.node-versionに「v8.5.0」と記載があれば「v8.5.0」が、「8.5.0」と記載があれば「8.5.0」が起動するようになり、.node-versionの記載されたバージョンでnodeを起動できるようになります。

結論

ndenvであればプロジェクトに合わせたnodeのバージョンが起動できるようになるのでvあり、vなし問題で悩まなくて済むようになります。

ndenvのインストール方法は「anyenv+ndenvでプロジェクトごとにnode.jsのバージョンを切り替える」を参考にしてください。

スポンサードリンク

«AngularのReactive Formsで複数チェックボックスを制御 | メイン | [書評] 超速Webページ速度改善ガイド»