なんでもノート

なんでも書くノートみたいなブログ

Node.jsのバージョン管理をVoltaに移行してみた

Nodeのバージョン管理にnodenvを利用していた。Voltaは良いと聞いていたが、面倒くさくて触ってこなかった。今更ながら重い腰を上げて移行してみた。

やったこと

nodenvのアンインストール

https://github.com/nodenv/nodenv#uninstalling-nodenv に書いてあることをした。アンインストール手順まで書いてあって親切。.zshrcにあった以下の行を削除。

eval "$(nodenv init -)"

以下のコマンドを実行。

$ rm -rf `nodenv root`
$ brew uninstall nodenv

無事にアンインストールが完了した。

Voltaのインストール

https://docs.volta.sh/guide/getting-started 通りにコマンドを実行した。

$ curl https://get.volta.sh | bash

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 12319  100 12319    0     0  12221      0  0:00:01  0:00:01 --:--:-- 12233
  Installing latest version of Volta (1.0.8)
    Checking for existing Volta installation
    Fetching archive for macOS, version 1.0.8
######################################################################## 100.0%
    Creating directory layout
  Extracting Volta binaries and launchers
    Finished installation. Updating user profile settings.
Updating your Volta directory. This may take a few moments...
success: Setup complete. Open a new terminal to start using Volta!

以下の2つのexportコマンドが.zshrcに書き込まれた。

export VOLTA_HOME="$HOME/.volta"
export PATH="$VOLTA_HOME/bin:$PATH"

Nodeをインストール

$ volta install node@16
success: installed and set node@16.16.0 (with npm@8.11.0) as default

$ node -v
v16.16.0

$ which node
~/.volta/bin/node

最初のコマンドで2022/08/11現在、LTS版の16.16.0がインストールされた。インストールが速いと聞いていたが、確かに速かった。

Nodeのバージョンを固定

pinコマンドでNodeのバージョンを固定するらしい。

$ volta pin node
success: pinned node@16.16.0 (with npm@8.11.0) in package.json

$ git diff
diff --git a/package.json b/package.json
index d49efda..a026ba0 100644
--- a/package.json
+++ b/package.json
@@ -21,5 +21,8 @@
     "eslint": "8.21.0",
     "eslint-config-next": "12.2.4",
     "typescript": "4.7.4"
+  },
+  "volta": {
+    "node": "16.16.0"
   }
 }

package.jsonのvoltaフィールドにNodeのバージョンが書き込まれた。これでVoltaを利用していれば他のプロジェクトメンバーも同じNodeのバージョンで開発することができる。