概要
- 個人や仕事で、複数のプロジェクトに渡ってやっていくうちに、nodeのバージョンを切り替えるのが煩わしくなっくる。
- 私自身も
nvm use v12
などと明示的に切り替えていた。 - 今回はそう言った方のために、nodeのバージョンを自動的に切り替える手順を紹介します。
direnv と nvm について
direnvのインストール & 初期セットアップ
direnvについてはこちらが良い記事だったので、はじめに入れておく。
https://qiita.com/kompiro/items/5fc46089247a56243a62
nvmのインストール & 初期セットアップ
nvmについてはこちらが良い記事だったので、はじめに入れておく。
Macの方はHombrewを使うと思うがGithubには公式でサポートしないと書いてあるので、認識だけしておく。(私も使っているが問題になったことはない)
https://qiita.com/ffggss/items/94f1c4c5d311db2ec71a#nvm%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB
direnvとnvmを用いてディレクトリごとにnodeのバージョンを切り替える
direnvの設定にuser_nvm()を加える
~/.config/direnv/direnvrc
もしくは ~/.direnvrc
に書く
use_nvm() {
local node_version=$1
nvm_sh=~/.nvm/nvm.sh
if [[ -e $nvm_sh ]]; then
source $nvm_sh
nvm use $node_version
fi
}
(https://github.com/direnv/direnv/wiki/Node#using-nvm より引用)
.envrc
に切り替えたいnodeのバージョンを書く
切り替えたいディレクトリに.envrc
を作成。
細かいバージョン指定でなく、v14
などとざっくりで書いておけば、nvmによって自動で選ばれるので、おすすめ
use nvm v14
direnvが使えるように許可 & 読み込み
❯ direnv allow
direnv: loading .envrc
direnv: using nvm v14
Now using node v14.0.0 (npm v6.14.4)
direnv: export ~NVM_BIN ~PATH
うまく切り替わったことがわかる。次に、試しにディレクトリを切り替える
❯ cd ..
direnv: loading ../../../../.envrc
direnv: using java 8.0.242.hs-adpt
direnv: export +CPATH +LD_LIBRARY_PATH +LIBRARY_PATH +PKG_CONFIG_PATH ~JAVA_HOME ~MANPATH ~PATH
❯ cd -
direnv: loading .envrc
direnv: using nvm v14
Now using node v14.0.0 (npm v6.14.4)
direnv: export ~NVM_BIN ~PATH
ディレクトリを切り替えてもうまく切り替わっていればOK