at backyard

Color my life with the chaos of trouble.

プロジェクトごとの.nvmrcファイルを勝手に読み取って、使用しているNode.jsのversionに自動的に設定する方法

そういう事できないかなーと思っていた。
いや、正確にはできるんだろうけど、ちょっと設定めんどいかもなーなんて勝手に思っていた。

結論、そんなことはなかった。

設定の方法はnvmのREADMEに記載されていた。
私はzshを使っているので、下記を参考にした。

https://github.com/nvm-sh/nvm#calling-nvm-use-automatically-in-a-directory-with-a-nvmrc-file

上にも書いてあるが、自身の ~/.zshrc 内に下記を追記すればOKだった。

# place this after nvm initialization!
autoload -U add-zsh-hook
load-nvmrc() {
  local node_version="$(nvm version)"
  local nvmrc_path="$(nvm_find_nvmrc)"

  if [ -n "$nvmrc_path" ]; then
    local nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")")

    if [ "$nvmrc_node_version" = "N/A" ]; then
      nvm install
    elif [ "$nvmrc_node_version" != "$node_version" ]; then
      nvm use
    fi
  elif [ "$node_version" != "$(nvm version default)" ]; then
    echo "Reverting to nvm default version"
    nvm use default
  fi
}
add-zsh-hook chpwd load-nvmrc
load-nvmrc

.nvmrcが用意されているプロジェクトに移動したタイミングで、.nvmrcに記述されたnodeのversionを読み取って、nvm useしてくれる。
(そのバージョンがない場合は nvm install してくれるようだ)

備忘録として残しておく。

そう言えば過去にnvm関連の投稿をしていたので、そちらも載せておく。
(最近 nvm を更新していなかったことに今気づいたので、これ見て nvm のversionあげたところ。ちなみにアップデート前の最新のコミットログが2018年だった..)

nvmのversionを挙げたときのメモ(備忘録) - at backyard