Mac用にNode.jsのバージョン管理ツールを比較・検討し直した話【2023年】
きっかけ
以前使っていた私用のMacが限界を迎えつつあったので、思い切って新しいMacをお迎えしました。
まずはフロント周りの環境構築をしようと思ったのですが、「でもどうせなら新しいツールとか入れてみたいよね」と思いまして、休日を使ってNode.jsの新しいバージョン管理ツールを探す旅に出ました。
その際のメモがまとまったので、誰かの参考になればと思い、久しぶりに投稿します。
私の環境は以下の通りです。
- MacBook Air(M2、2022)
- macOS:Ventura 13.4.1
バージョン管理ツールの比較一覧
これまでは nvm
や node-env
を使っていたのですが、最近は他にも色々ありそうなのでちょっと探してみました。
探す際の条件は以下の通りです。
- 直近1年以内に更新されている
- スター数が5k以上
- プロジェクトごとにバージョンを指定できる
- Macで使える
そして私が見つけたのは以下の5件になります。
※ 以下は記事執筆時点の情報です。
名前 | 対応している設定ファイル | スター数 | 最新バージョンとリリース日 |
---|---|---|---|
asdf |
.node-version .nvmrc
|
17.8k | v0.12.0 (2023-06-09) |
volta | package.json |
8.3k | v1.1.1 (2023-01-25) |
fnm |
.node-version .nvmrc
|
12.2k | v1.33.1 (2022-12-06) |
n |
.n-node-version .node-version .nvmrc package.json
|
17.7k | 9.1.0 (2023-04-15) |
nvm | .nvmrc |
68k | v0.39.3 (2022-12-24) |
スター数だけを見ると nvm
の圧勝ですね。
でも、どうせなら新しいやつを使ってみたい。
個人的に初めて目にするものもあって、なんだか面白そうです。
それでは簡単ではありますが、個別に見ていきましょう。
asdf
複数の言語に対応したバージョン管理ツールです。
anyenv
の上位互換的なイメージですね。
Manage multiple runtime versions with a single CLI tool, extendable via plugins
インストール手順は以下です。
git
と curl
が必要なので、必要に応じてそちらもインストールしましょう。
# install curl and git
brew install coreutils curl git
# download asdf
git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.12.0
そして、以下の設定を ~/.zshrc
や ~/.bashrc
に追記したらOKです。
. "$HOME/.asdf/asdf.sh"
補完機能もあるのが素敵ですね。
(以下はzsh用の設定。Bashはこちら)
# append completions to fpath
fpath=(${ASDF_DIR}/completions $fpath)
# initialise completions with ZSH's compinit
autoload -Uz compinit && compinit
実際に利用する際は、各言語のプラグインを入れて管理します。
# Node.jsの場合はこうなる
asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git
asdf install nodejs latest
# グローバルで使用する場合
asdf global nodejs latest
# ローカルで使用する場合
asdf local nodejs latest
プラグインを自作することもできるみたいで、ちょっと楽しそう。
GitHubにテンプレートも公開されています。
.tool-versions
というファイルで全てのバージョン定義を管理するので、チームでの管理が楽そうですね。
ファイルの中身はこんな感じです。
nodejs 20.3.1
Volta
Rust製のNode.jsバージョン管理ツールです。
公式では「手間要らずのJavaScriptツールマネージャー」と説明されています。
The Hassle-Free JavaScript Tool Manager
使い始めるには以下2ステップでOK。
# install Volta
curl https://get.volta.sh | bash
# install Node
volta install node
ツールのバージョンを固定する場合は package.json
を使います。
"volta": {
"node": "12.20.2",
"yarn": "1.19.2"
}
バージョン設定用のファイルを追加しなくて良いので、新規にプロジェクトを開始する場合はちょっと楽かもですね。
fnm
こちらもRust製のNode.jsバージョン管理ツールです。
名前の由来は Fast Node Manager
の頭文字ということで、スピードへのこだわりが感じられます。
🚀 Fast and simple Node.js version manager, built in Rust
使い始めるには以下でOKとのこと。
(Windowsの場合は色々事前準備が必要そう)
# install fnm
curl -fsSL https://fnm.vercel.app/install | bash
# install Node
fnm install
# set latest Node
fnm use
Voltaとは異なり、バージョン設定用ファイルとして.node-version
と .nvmrc
が使えます。
既存の設定ファイルをそのまま利用したい場合は便利ですね。
n
名前の通り、シンプルさを追求したNode.jsバージョン管理ツールです。
コマンド打つ際もタイプ数が少なくて良い感じですね。
Node.js version management: no subshells, no profile setup, no convoluted API, just simple.
インストール方法は色々あるようですが、npmでもbrewで一発です。
# use npm
npm install -g n
# use Homebrew
brew install n
バージョン設定ファイルはよりどりみどりなので、選択肢に困ることはなさそうですね。
.n-node-version
.node-version
.nvmrc
package.json
シンプルさと大きな度量を兼ね備えた姿が素敵です。
nvm
Node Version Manager
、略して nvm
。名は体を表すとはこのことですね。
誰もが一度は名前を耳にしたことがありそう。
Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions
インストールは以下でOK。
# install nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
# install Node
nvm install node
# set latest Node
nvm use node
バージョン設定ファイルはもちろん .nvmrc
ですね。
今回調べていて気づいたのですが、 nvm
のバージョンってまだ v0.39.3
なんですね。
安定感抜群のイメージなのでちょっとびっくり。
そういえば7 Days to Dieもずっとα版ですね
まとめ
ここまで5種類のNode.jsバージョン管理ツールを見てきましたが、どれも人気と実力を兼ね備えたツールなので、どれを選んでも問題なさそうです。
ただ、個人で利用する場合は新しいツールでも問題ないと思いますが、チームで導入する場合は利用者が多くてある程度枯れたツールの方が安心感があると思います。
その上で強いて選ぶ基準を挙げるとするなら、以下のような感じでしょうか。
私は個人で利用する&複数言語を利用するので、今回は asdf を導入することにしました。
新しいツールを触るのってワクワクしますね!
それでは、良き開発Lifeを!
参考にさせていただいた記事
素晴らしい記事をありがとうございました!
Discussion