Node 系ツールのプロジェクト間のバージョン管理に Volta を使い始めてみた
プロジェクト間で必要とされる node.js のバージョンが違うことはままあり、そのために皆さん nvm や nodebrew などのツールを使っておられることだろうと思います。
今回それ系統で Volta というツールを知ったので紹介いたします。
Volta - The Hassle-Free JavaScript Tool Manager
Volta の特徴
- セットアップが比較的簡単
- Rust製で速いらしい
- 実行する node のバージョンなどをプロジェクトのディレクトリに入るだけで自動で切り替えてくれる
- npm や yarn でグローバルインストールした時も、どのディレクトリでインストールされたかを自動で記録するため、コマンドラインから直接コマンドを実行できつつもプロジェクト毎に違うバージョンを使うことができる
- node だけでなく npm や yarn もプロジェクト毎に固定できる
使い方
インストール
curl https://get.volta.sh | bash
これを実行することによって volta コマンドが使えるようになると思います。
また、 node や npm のパスも、上記を実行した段階で勝手に通してくれています。(他のツールで node 実行できるようにしている場合はアンインストールしておかないとダメだと思いますが)
node のバージョンの追加
volta コマンドを使って行います
https://docs.volta.sh/reference/install
volta install node@12
node 以外のツールチェーンのインストール
例えば yarn
volta install yarn
ts をグローバルインストールしたりも普通の npm コマンドでできるのですが
npm install --global typescript
ここで volta のオシャレポイントはグローバルインストールしたもののバージョンもプロジェクト毎に自動で管理してくれるところです。
ドキュメントの解説そのまま借りると、例えば次のように違うプロジェクトでそれぞれグローバルインストールを行った際に、自動的にプロジェクトとバージョンの値を覚えておいてくれて、tsc コマンドを実行した時にそのバージョンで実行してくれるようになります。
https://docs.volta.sh/guide/understanding
cd /path/to/project-using-typescript-2.9.2
tsc --version # 2.9.2
cd /path/to/project-using-typescript-3.4.5
tsc --version # 3.4.5
グローバルインストールでコマンドをシンプルに実行できるようにしつつも、プロジェクト間の整合性を気にしなくていい機能になっています。
チームで設定を共有する - pin
自分だけがプロジェクトを切り替えると使うツールチェインのバージョンが切り替わる恩恵を受けてもアレなので、設定を共有する方法ですが、 volta pin というコマンドを使います。
volta pin node@12
volta pin yarn@1.14
これを実行すると、実行したディレクトリにある package.json に次のような volta の設定が追加されます。
"volta": {
"node": "12.20.1",
"yarn": "1.14.0"
}
これで他の人も同じ恩恵を享受することができるようになります。
シンプルだし動作速くていいなと思ったのでみなさんも是非試してみてください👍
Discussion