はじめに
この記事ではNodeのバージョン管理にVoltaをお勧めする記事です。
私は普段フロントエンド開発が多く、特にNuxtを業務で扱うことが多いです。
Nuxt2系プロジェクトや古いプロジェクトを触るときに、「何も触ってないのに急にアプリが立ち上がらなくなった!」ということがよくあります。また、Github Actions上でCIでも急にエラーになるということもたまにあります。
この原因で一番多いのがNodeのバージョン違いによるビルドエラーで、ここのマネジメントを行なってビルドエラーによるロスタイムを減らそうという記事です。
具体的に何が問題なのか
執筆現在、Node.jsのLTSは18.17.1です。対して最新版は20.6.1です。
リリース状況をみると、メジャーアップデートが半年に一度あり、メジャーバージョンが偶数のものがLTSとなっています。LTSの期間は約2年で、バージョン18のLTSは2025-04-30となっています。
基本的にLTSバージョンを採用することが多いので、プロジェクトによってはNode.jsを14や16、18を使っているということはよくあると思います。
そんな時に、古いバージョンで14までしか対応していないパッケージが含まれていると、16,18のバージョンで動かそうとするとビルドなどでエラーが起きてしまいます。
これを自動的に解決していく方法を今回は2つ考えてみます。
解決方法
今回は、以下2つの解消法を紹介します。
.node-version
ファイルの作成- Voltaの導入
.node-version
ファイルの作成
.node-version
ファイルはNode.js のプロジェクトで使用する Node.js のバージョンを指定するためのファイルです。
node --version > .node-version
例えば、プロジェクトが Node.js のバージョン 14.15.1 を必要とする場合、.node-version
ファイルに以下のように記述します。
14.15.1
対応状況が広く、他のNode.js のバージョン管理ツール(nvm, nodeenv, n)でも使用できます。
ただし、適用タイミングが自動的なものもあれば手動のものもあり、余分にファイルが増えてしまうというのがちょっと微妙です。
そこで自動的に適用かつファイルも増やさずに対応できる次の方法をお勧めします。
Voltaの導入
Voltaとは
Voltaは、Rust製のNode.js のバージョン管理ツールです。
https://volta.sh/
おすすめポイント
node
のバージョン固定がコマンド1つでできるpackage.json
に記載されるため余計なファイルを増やさない- インストールが簡単
- MacでもWindowsでも利用可能
- 早い!
node
のバージョン固定がコマンド1つでできる
プロジェクトのディレクトリでお使いのパッケージマネージャーに合わせてvolta pin
コマンドを打つだけで設定完了です。
これで、該当プロジェクトに移動すると自動的にバージョンが切り替わってくれます!
volta pin node@12.20 volta pin yarn@1.19
package.json
に記載されるため余計なファイルを増やさない
pin
コマンドを打つと、package.json
に以下のセクションが追記されます。.node-version
のように新規で作成する必要はありません。
"volta": { "node": "12.20.2", "yarn": "1.19.2" }
インストールが簡単
Macの方はhomebrewなら以下コマンド叩くだけです。パスも自動的に通してくれます。
brew install volta
Windowsの方も以下リンクからインストーラーをダウンロードします。
https://docs.volta.sh/guide/getting-started
減点ポイント
パッケージマネージャーのpnpm
の対応状況がまだ実験的であるところです。
以下、公式です。一応使えるっぽいです。
https://docs.volta.sh/advanced/pnpm
最後に
Voltaのススメでした。
使い方もシンプルで、公式ドキュメントもさっと読める文量なのでぜひ使ってみてください!