✈️

Node.js のバージョン管理を Volta から asdf へ移行した

2024/12/26に公開

Node.jsのバージョン管理を Volta から asdf に移行した手順を記述する。

前提条件

  • macOS
  • Homebrew をインストール済み
  • Volta を Node.js バージョン管理ツールとして使用中
    • curl https://get.volta.sh | zsh で導入した
  • Yarn をパッケージマネージャとして使用中
  • シェルとして zsh を使用

移行手順

1. asdf のインストール

Homebrew を使用して asdf をインストールする。

# Homebrew で asdf をインストール
brew install asdf

# shell の設定ファイルに以下を追加
echo -e "\n. $(brew --prefix asdf)/libexec/asdf.sh" >> ~/.zshrc
source ~/.zshrc

2. Node.js 環境の構築

asdf プラグインをインストールし、Node.js の環境を設定する。

# Node.js プラグインのインストール
asdf plugin add nodejs

# 最新の LTS バージョンをインストール(使用したいバージョンで OK)
asdf install nodejs lts

# グローバルのデフォルトバージョンを設定
asdf global nodejs lts

3. Volta の削除

Volta の設定と関連ファイルを削除します。

# Volta でインストールしたパッケージの確認
# 確認結果を保存しておくと、後から必要なパッケージが判明した時に再インストールが容易になる。
volta list all

# Volta 設定を削除
rm -rf ~/.volta

# 必要なら、
# 各種リポジトリで package.json から Volta 設定を削除する
# "volta": { ... } の部分を削除

4. 動作確認

新しい環境の動作を確認する

# Node.jsのバージョン確認
node --version

# npm の動作確認
npm --version

# グローバルパッケージの確認
npm list -g --depth=0

Yarn の設定

Yarnは asdf プラグインではなく、Corepack を使用する。

# 1. Corepackの有効化
corepack enable

# 2. 指定バージョンの Yarn を準備
corepack prepare --activate yarn@4.1.1

# 3. Node.js のシムを更新
asdf reshim nodejs

# 4. シェルの再起動
source ~/.zshrc

トラブルシューティング

asdf インストール時の問題

coreutils との競合

エラー文

Error: Cannot install coreutils because conflicting formulae are installed.
  md5sha1sum: because both install `md5sum` and `sha1sum` binaries

対応方法

md5sha1sum のアンインストールは、他ツールとの依存関係に注意してください。

# md5sha1sum をアンインストール
brew uninstall md5sha1sum

# その後 asdf をインストール
brew install asdf

実行権限の問題

エラー文

permission denied: /opt/homebrew/opt/asdf/libexec/asdf.sh

対応方法

# 実行権限を付与
chmod +x /opt/homebrew/opt/asdf/libexec/asdf.sh

最後に確認しておくと良いこと

  1. シェルの設定ファイル(~/.zshrc)に asdf の設定が正しく追加されているか
  2. asdf のプラグインが正しくインストールされているか( asdf plugin list で確認)
  3. Node.js のバージョンが正しく設定されているか( asdf current で確認)
  4. プロジェクトの.tool-versionsファイルが正しく作成されているか

新たに Node.js と Yarn の組み合わせインストールしたい時

以下事例のコマンド実行例

  • Node.js: v18.18.2
  • Yarn: 4.1.1
asdf install nodejs 18.18.2
corepack enable
corepack prepare --activate yarn@4.1.1
asdf reshim nodejs

参考リンク

Discussion