環境
OS: macOS Catalina 10.15.7
nvm: 0.36.0
direnv: 2.27.0
背景
とあるプロジェクトではnodeがv10だけど、とあるプロジェクトではv14というケースがある。プロジェクトごとに異なるnodeのバージョンを自動で使えるようにしたい
nodeのバージョン管理はnvmで行っているので、毎回毎回 nvm use v10.0.0 とかすれば済む話ではあるけど、忘れたりしてエラーになると面倒。
direnvを使って解決
direnvを利用する。brewでインストール。
% brew update
% brew install direnv
プロジェクトフォルダのルート(ここではproject1)に .nvmrc と .envrcをして自動で読み込むということをしていく。
まずはnodeのバージョン確認。
~/project1 % node -v v10.15.0
.nvmrcを作成
~/project1 % echo "14.4.0" > .nvmrc
.envrcを作成
~/project1 % vi .envrc
# .envrc
source $(brew --prefix nvm)/nvm.sh
nvm use
1行目のnvmの読み込みは、環境によって変わる可能性がある。
私の場合は、nvmのインストールにハマって、.zshrcに記述していたのでその内容をコピペした。
設定をすると、direnv: error .envrc is blocked. Run direnv allow to approve its content.
と言われるので、
~/project1 % direnv allow
エラーが出なければ、設定完了。現時点でnodeのバージョンの変更もされているはずなので、nodeのバージョンを確認する。
% node -v
v14.4.0
念のため、ターミナルを終了して再度設定したフォルダに移動してnode -vをしておくと安心
コメントを残す