【Mac】Homebrew、Volta、corepackでNode.jsとnpmとyarnを管理する

2023/05/18に公開

はじめに

asdfからvoltaに切り替えたのでその時の備忘録です。

切り替えた理由としては、asdfはwhich nodeasdf which nodeのように書かないといけなくて少し億劫だった…みたいなのはありますが、一番はVoltaを使ってみたかったからです。

開発環境

  • M1Mac
  • Venture
  • Node16系とyarn1系を使いたい

asdfのアンインストール

公式が詳しく書いてくれています。
https://asdf-vm.com/manage/core.html#uninstall

Voltaのインストール

公式はcurlコマンドで入れるようになっていますが、Homebrew経由で入れます。
※Homebrewが入っていない場合はこちら。
https://brew.sh/index_ja

  1. Voltaをインストール
$ brew install volta

https://formulae.brew.sh/formula/volta

  1. 確認
$ volta -v
1.1.1 // バージョンが出れば成功

Node.jsのインストール

  1. Node.jsをインストール
// バージョン指定
$ volta install node@16.19.1

// メジャーバージョンのみ指定(以下はvoltaが良さげなやつを勝手に入れてくれる)
$ volta install node@16

// 最新版のLTSをインストール
$ volta install node
  1. 確認
$ node -v
v16.20.0 // バージョンが出れば成功

※パスが通っていない場合
cat ~/.zshrcで.zshrcに以下が登録されているか確認、なければ追加

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

corepackのインストール

corepackに関しては以下の記事が詳しく書かれています。
https://zenn.dev/teppeis/articles/2021-05-corepack

  1. corepackをインストール
$ volta install corepack
success: installed corepack@0.17.2 with executables: corepack, pnpm, pnpx, yarn, yarnpkg
  1. corepackを有効にする
$ corepack enable
  1. npmをcorepackの管理下にする
    (corepackはデフォルトだとyarnとnpmしか管理していないのでオプトインが必要)
corepack enable npm

https://nodejs.org/api/corepack.html#corepack_supported_package_managers

  1. 確認
$ npm -v
8.19.4

$ yarn -v
1.22.19

※yarnのバージョンが確認できない場合
現時点でcorepackはyarnを管理しておらずvoltaの管理になるので、インストールディレクトリを明示的に指定して、corepackはvoltaのyarn shimsを上書きする。

corepack enable --install-directory ~/.volta/bin

https://github.com/volta-cli/volta/issues/987

使い方

package.jsonpackageManagerを記載する。

package.json
{
  "packageManager": "npm@8.19.4"
}

余談

yarnの1系を使いつつcorepackで他のバージョンを制御する、というのはできないらしいです。
https://zenn.dev/karino_m/articles/dont-use-yarnv1-with-corepack

Discussion