LoginSignup
3
6

More than 3 years have passed since last update.

direnvとnvmを用いてディレクトリごとにnodeのバージョンを切り替える

Posted at

概要

  • 個人や仕事で、複数のプロジェクトに渡ってやっていくうちに、nodeのバージョンを切り替えるのが煩わしくなっくる。
  • 私自身もnvm use v12などと明示的に切り替えていた。
  • 今回はそう言った方のために、nodeのバージョンを自動的に切り替える手順を紹介します。

direnv と nvm について

Githubのdirenvnvmを参考

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 に書く

~/.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によって自動で選ばれるので、おすすめ

.envrc
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

3
6
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
6