プロジェクトごとにNode.jsのバージョンを切り替える
Node.jsを使って開発していると
- プロジェクトごとにNode.jsのバージョンが違う
- 人によってローカルで使っているNode.jsのバージョンが違う
といったことがあると思います。
Voltaを使うとNode.jsのバージョンにまつわる課題に簡単に対処できます。
Voltaとは
VoltaはnodeやnpmなどのJavaScript関連のコマンドラインツールを管理するためのツールです。Voltaにはプロジェクト単位で自動的にツールのバージョンを切り替える機能があります。この機能のおかげで開発者がツールのバージョンを手動で切り替える必要が無くなります。
インストール
Macの場合は以下のコマンドでインストールします。Windowsの場合は公式ドキュメントにあるリンクからインストーラをダウンロードして下さい。
curl https://get.volta.sh | bash
bash,zsh,fishを使っている場合、インストール完了後にシェルを再起動するとvolta
コマンドが使えるようになります。
volta --version
>> 1.1.0
Voltaの使い方
サンプルプロジェクト
以下のproject1
とproject2
を使います。
mkdir project1
cd project1
npm init -y
cd ..
mkdir project2
cd project2
npm init -y
cd ..
.
├── project1
│ └── package.json
└── project2
└── package.json
Node.jsのバージョンを指定する
project1
とproject2
でそれぞれ異なるバージョンのNode.jsを使うようにしてみようと思います。プロジェクトで使用するNode.jsのバージョンを指定するにはvolta pin
コマンドを使います。
cd project1
volta pin node@18.12.0
コマンドを実行するとpackage.json
にvoltaの設定が追加されます。
{
"name": "project1",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"volta": {
"node": "18.12.0"
}
}
プロジェクトのルートディレクトリより下ではvolta pin
で指定したバージョンのNode.jsが使用されるようになります。
node -v
>> v18.12.0
project2
にはproject1
とは違うバージョンを指定してみます。
cd project2
volta pin node@16.19.0
{
"name": "project2",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"volta": {
"node": "16.19.0"
}
}
node -v
>> v16.19.0
カレントディレクトリを変えるとNode.jsのバージョンも自動的に切り替わります。
まとめ
Voltaを使うとNode.jsのバージョンを簡単に管理できるようになります。プロジェクトごとに異なるバージョンのNode.jsを使用するようにしたり、開発者が使うNode.jsのバージョンをプロジェクト内で統一できるようになります。また、バージョンの切り替えはVoltaが自動的に行うので切り替え忘れの心配も不要です。
参考
Discussion