メlog

ジェロメのlog

voltaを入れたのでメモ

自分の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

zenn.dev

ただしWindowsではこのセットアップをスキップするオプションが使えないとのこと。

We don't currently support skipping volta setup on Windows.

docs.volta.sh

どうやって使用する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を使い明示的にバージョンを指定するのが良いのだろう、と考え直した

参考

hakoirioyaji.com

zenn.dev