自分のPCを新調したのでせっかくだからということでnodeのバージョン管理にvoltaを使うことにした。高速な上にnodeだけでなくnpmやyarnのバージョン管理も担ってくれるとのことだったのでワクワク
作業メモ
作業環境
- macOS Ventura v13.0.1
- volta 1.1.0
メモ
voltaのインストールは公式に従う volta.sh
デフォルトではyarn v3系(というか単純にLTS)をインストールするので、今まで1系を使っていた自分は改めて指定してv1を入れた
- 自分のプロジェクトをv1からv3へ移行したいがそれはまた別のタイミングで
- 一度入れたyarn v3系をuninstallした上でv1を入れ直そうとしたがuninstall yarnがサポートされていない
- 素直にエラーメッセージに
Uninstalling yarn is not supported yet.
とあったのでわかりやすくて助かる- 公式サイトには
As of Volta 0.9.0, you can also uninstall a package using your package manager with npm uninstall --global or yarn global remove
とあったが自分が入れたvoltaは1.1.0だし
you can also uninstall...
ではなくアンインストールできないのだからyou should uninstall...
くらいの言い方にしてほしい。単純にドキュメント更新が追いついていないだけだと思うので特に気にしていないけども - 公式サイトには
- 結局
~/.volta
以下の該当箇所をrm -rf
した - その後
volta install yarn@1
で解決
- 素直にエラーメッセージに
その他気になったこと
voltaそのもののバージョンはどうやって上げる?
インストール時のスクリプトを再度走らせれば良さそう。その際セットアップが再度走らないようオプションを指定してやる必要がありそう。
$ curl https://get.volta.sh | bash -s -- --skip-setup
ただしWindowsではこのセットアップをスキップするオプションが使えないとのこと。
We don't currently support skipping volta setup on Windows.
どうやって使用するnodeのバージョンを指定するのか?
- 当該ディレクトリに
package.json
がある場合、その中のvolta.node
を見にいき自動で切り替わる- グローバルのdefaultと異なるバージョンを使っている場合わかりやすく表示されるのが良さげ
volta list node ⚡️ Node runtimes in your toolchain: v16.19.0 (current @ /directory/to/your/project/package.json) v18.13.0 (default)
volta pin node@バージョン
でプロジェクトで使用するバージョンを指定するvolta.node
の指定がない場合はグローバルのdefaultが使用されるvolta pin
はpackage.jsonがないディレクトリでは使えないので、グローバルのdefaultを指定する場合はvolta install node@バージョン
で指定する(例えインストール済みであっても)
volta pin node@lts error: Not in a node package. Use `volta install` to select a default version of a tool.
とのこと。
- このため特定のバージョンをインストールする度にグローバルのdefaultが切り替わってしまう
- この挙動を知った時、直感的には不便さを感じたが意図したバージョンのnodeでスクリプトを走らせたい場合volta runを使い明示的にバージョンを指定するのが良いのだろう、と考え直した