📚

プロジェクトごとにNode.jsのバージョンを切り替える

2023/01/01に公開約2,100字

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の使い方

サンプルプロジェクト

以下のproject1project2を使います。

mkdir project1
cd project1
npm init -y
cd ..

mkdir project2
cd project2
npm init -y
cd ..
.
├── project1
│   └── package.json
└── project2
    └── package.json

Node.jsのバージョンを指定する

project1project2でそれぞれ異なるバージョンのNode.jsを使うようにしてみようと思います。プロジェクトで使用するNode.jsのバージョンを指定するにはvolta pinコマンドを使います。

cd project1
volta pin node@18.12.0

コマンドを実行するとpackage.jsonにvoltaの設定が追加されます。

package.json
{
  "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
package.json
{
  "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が自動的に行うので切り替え忘れの心配も不要です。

参考

https://volta.sh/

Discussion

ログインするとコメントできます