Nodebrew(nodebrew)は、Node.jsの複数のバージョンを1台のマシンに入れて、使う版を切り替えるためのコマンドラインツールです。Perlで書かれた1ファイルのスクリプトで、macOSとLinuxで動きます。この記事では、Homebrewでの導入とPATH設定、install・use・alias の使い方を、2026年10月22日にmacOSのIntel x86_64環境でnodebrew 1.2.0を動かした出力つきで解説します。Linux ARMの例は、CPU判定を差し替えて配布URLを確認したものです。最終リリースが2022年3月で止まっているため、Apple SiliconやLinux ARMで入らない版、LTSを指定できない点、migrate-package の落とし穴など、今使うと当たる問題もあわせて扱います。
まとめ|Nodebrewの仕組みと2026年時点の判断
- Nodebrewは、nodejs.orgの配布物を
~/.nodebrew/node/の下へ版ごとに展開し、~/.nodebrew/currentというシンボリックリンクの向き先を変えて版を切り替えます。PATHに$HOME/.nodebrew/current/binを通さないと切り替わりません。 - 基本の流れは
brew install nodebrew→nodebrew setup_dirs→ PATH設定 →nodebrew install v24→nodebrew use v24です。2026年10月22日時点でlatestとstableはどちらも v26.12.1 に、v24は v24.22.1 に解決されました。 - 最終リリースは2022年3月19日の1.2.0で、以後コミットはありません。LTSの指定(
lts)は無く、.nvmrcによる自動切り替えもありません。 - M1〜M4のMacでは、Apple Silicon向けの配布物が無い v15 以前を入れられません。Linuxの64bit ARM(aarch64)では32bit版を取りに行く誤判定があり、v24以降は入りません。
- macOS(Intel・Apple Silicon)でNode.js 16以降を1つずつ切り替えるだけなら今も動きます。Linux ARM・Windows・チームでの版固定が必要なら、fnmかmiseへ移るのが確実です。
Nodebrewの仕組み|currentリンクによる使用バージョンの共有
Nodebrewの実体は nodebrew という約1,000行のPerlスクリプトです。install を実行すると、OS名と uname のマシン名からnodejs.orgの配布物のURLを組み立て、curl(無ければwget)でtar.gzを取得して展開します。ソースからビルドする compile もありますが、通常は配布物を使う install で足ります。
導入後のディレクトリは次の形になります。置き場所は環境変数 NODEBREW_ROOT で変えられ、既定は $HOME/.nodebrew です。
~/.nodebrew/
├── current -> ~/.nodebrew/node/v24.22.1 # nodebrew use で張り替わる
├── node/
│ ├── v24.22.1/
│ └── v26.12.1/
├── src/ # ダウンロードしたtar.gz(nodebrew cleanで削除)
├── alias # nodebrew alias の設定
└── default/
nodebrew use は current の向き先を変えるだけなので、切り替えは開いているすべてのターミナルに即座に効きます。シェルごとに版を持つnvmとはここが違い、2つのターミナルで別の版を同時に使うことはできません。一時的に別の版で動かしたいときは、後述の nodebrew exec を使います。
開発状況|1.2.0(2022年3月)以降の更新なし
2026年10月22日に公式リポジトリ(hokaccha/nodebrew)をGitHub APIで確認したところ、最終リリースはv1.2.0、最後のコミットは2022年3月19日の1.2.0リリースで、同じ日に prune コマンドが追加されています。リポジトリはアーカイブされていませんが、未解決のissueが15件、Pull Requestが2件残っています。2015年の「LTSのインストール対応」(#47)と「.nvmrc相当の機能」(#35)、2022年の「aarch64で動かない」(#80)もその中にあります。
一方で利用は続いています。Homebrewのnodebrewのformulaは1.2.0を配布しており、直近365日のインストール数は2,970件でした。macOS(Intel)では、2026年10月21日公開のv26.12.1まで問題なく入りました。一方、後述のLinux ARMの判定やLTSの指定のように、1.2.0の公開後に変わったCPUやNode.jsのリリース方針には対応していません。新しい環境に追随することを前提にせず、使う予定の機能が今の版で動くかを確かめてから選んでください。
Nodebrewのインストール手順|HomebrewとcurlとPATH設定
Homebrewで入れる手順(macOS)
macOSではHomebrewから入れるのが手軽です。formulaの案内(caveats)どおり、続けて setup_dirs で作業用ディレクトリを作ります。
brew install nodebrew
nodebrew setup_dirs
多くの手順記事にある nodebrew setup でも動きますが、こちらはGitHubのmasterブランチからスクリプトをもう1本 ~/.nodebrew/nodebrew へダウンロードします。Homebrewで本体を管理するなら、ディレクトリだけ作る setup_dirs で足ります。
curlで入れる手順(Linux・Homebrewを使わないMac)
Linuxや、Homebrewを使わない環境ではインストーラーをPerlに渡します。READMEにある短縮URL git.io/nodebrew は2026年10月22日時点でもraw.githubusercontent.comへ転送されていますが、転送元のサービスは新規受付を終えているため、転送先を直接指定しておくほうが確実です。
curl -L https://raw.githubusercontent.com/hokaccha/nodebrew/master/nodebrew | perl - setup
WindowsにはWSL(Ubuntuなど)の中で同じ手順で入れます。Nodebrewが組み立てるURLはtar.gz形式だけで、Windows向けのzip配布物(win-x64)を取りに行く処理が無いため、PowerShellやコマンドプロンプトでは使えません。
PATHの設定と反映の確認
macOSの標準シェルはzshなので ~/.zshrc に、bashなら ~/.bashrc(macOSのbashは ~/.bash_profile)に追記します。
echo 'export PATH=$HOME/.nodebrew/current/bin:$PATH' >> ~/.zshrc
source ~/.zshrc
nodebrew -v # nodebrew 1.2.0
# 次節の install と use の実行後に確認する
command -v node # $HOME/.nodebrew/current/bin/node を指すこと
$PATH の前に置くのが要点です。後ろに置くと、公式インストーラーやHomebrewで入れた /usr/local/bin/node や /opt/homebrew/bin/node が先に見つかります。実測でも、PATHを通さずに nodebrew use v26 を実行すると表示は use v26.12.1 になる一方、command -v node は /usr/local/bin/node のままでした。
Node.jsのインストールと切り替え|install・use・alias
バージョン指定の書き方と解決結果
nodebrew ls-remote でインストールできる版の一覧が出ます。指定は完全な版番号のほか、メジャー版だけ・latest・stable でも書けます。2026年10月22日の実行結果は次のとおりです。
| 指定 | 意味 | 解決された版 |
|---|---|---|
latest |
最も新しい版 | v26.12.1 |
stable |
偶数メジャーの最新版 | v26.12.1 |
v24 / 24 |
24系の最新版 | v24.22.1 |
v24.22 |
24.22系の最新版 | v24.22.1 |
lts / --lts |
非対応 | version not found |
$ nodebrew install v24
Fetching: https://nodejs.org/dist/v24.22.1/node-v24.22.1-darwin-x64.tar.gz
Installed successfully
$ nodebrew ls
v24.22.1
v26.12.1
current: none
同じ版をもう一度入れようとすると v24.22.1 is already installed で止まります。install-binary は旧版との互換のために残っている別名で、install と同じ動きです。
nodebrew useによる版の選択とaliasによる名前の登録
$ nodebrew use v24
use v24.22.1
$ node -v
v24.22.1
$ nodebrew alias default v24
default -> v24
$ nodebrew use default
use にもメジャー版だけの指定が使え、入っている中で最も新しい24系が選ばれます。alias は名前に版を割り当てる機能で、nodebrew use default のように使います。不要になった名前は nodebrew unalias default で消します。
LTS版を入れるときの指定方法
Nodebrewには「LTSの最新」を選ぶ指定がありません。stable は「偶数メジャーの最新」というだけで、LTSかどうかは見ていないためです。2026年10月22日時点のNode.jsのリリース予定表では、24系は10月20日からMaintenance LTSに入り、26系は10月28日にLTSへ移る予定です。検証日の2026年10月22日に stable を指定すると、LTS入り前の26系(Current)が選ばれました。
LTSを使うなら版を明示し、nodebrew install v24 のように書きます。26系は10月28日以降にLTSになります。さらに、Node.js 27からはすべてのメジャー版がLTSになり、奇数・偶数の区別がなくなります。予定表でも27系は2027年10月20日にLTS入りとされています。stable は奇数の27系を飛ばし続けるので、版の選び方はNode.js LTSの現行版と移行時期で確認し、番号で指定してください。26系の変更点はNode.js 26の新機能と移行手順にまとめています。
Apple SiliconとLinux ARMでの注意点
Nodebrewは uname のマシン名を見て、取りに行く配布物を決めます。この判定が新しいCPUに追いついておらず、次の2つの問題が出ます。
Apple Silicon向けバイナリの対応境界|Node.js 16以降
Apple SiliconのMacでは uname -m が arm64 を返し、Nodebrewは darwin-arm64 の配布物を取りに行きます。nodejs.orgの配布一覧でApple Silicon向けの配布物が最初に出るのは v16.0.0 です。そのため v14 などの古い版は is not found で止まります(issue #79)。古いプロジェクトのために v14 が必要なら、Rosetta 2で動かしたターミナルから実行すると uname -m が x86_64 になり、Intel向けの版が入ります。逆に、ターミナルをRosettaで開いていると、v16以降でも気づかずにIntel向けの版が入ります。node -p process.arch が arm64 になっているか確認してください。
Linux aarch64でのARM判定不具合とv24以降のバイナリ導入失敗
ソースの判定処理では、Linuxの64bit ARMが返す aarch64 を32bit ARMの armv7l として扱っています。Node.jsは24.0.0から linux-armv7l の配布物を出しておらず(23.11.0までは配布)、Raspberry Pi OS(64bit)やAWS Graviton上では v24 以降を入れられません。判定を aarch64 に差し替えて実行すると、次のようになりました。
$ nodebrew install v24
v24.22.1 is not found
Can not fetch: https://nodejs.org/dist/v24.22.1/node-v24.22.1-linux-armv7l.tar.gz
22系はarmv7l版がまだあるので入りますが、入るのは32bitのバイナリで、32bitのライブラリが無いOSでは起動しません。この不具合は2018年のissue #71で報告され、修正されていません。Linux ARMでは、linux-arm64 を正しく選ぶfnmやmiseを使ってください。
プロジェクトごとの切り替え|.nvmrc非対応とexecでの代用
Nodebrewはディレクトリを移っても版を変えません。.nvmrc や .node-version も読みません。プロジェクトごとに版を変えたいときは、nodebrew exec で一時的に別の版を使います。.nvmrc の中身が 24 のような番号だけなら、そのまま渡せます。
$ nodebrew exec "$(cat .nvmrc)" -- node -v
v24.22.1
注意点が1つあります。exec は -- 以降の引数を空白でつなぎ、1つの文字列としてシェルに渡します。そのため引数の引用符が外れ、nodebrew exec v24 -- node -e 'console.log(process.version)' は syntax error near unexpected token で失敗しました。引用符が要るコマンドは、全体を1つの文字列で渡します。終了コードはそのまま返るので、npm scriptsやCIの判定にも使えます。
$ nodebrew exec 24 -- 'node -e "process.exit(3)"'; echo $?
3
migrate-packageでグローバルパッケージを移すときの落とし穴
nodebrew migrate-package <旧版> は、旧版にグローバルインストールしたパッケージを今の版へ移すコマンドです。中身は、旧版の lib/node_modules/<パッケージ> を引数にした npm install -g を順に実行するだけです。npm 7以降はフォルダを指定した install -g をコピーでなくシンボリックリンクとして扱うため、移した先は旧版を指すリンクになります。
$ nodebrew use v26
$ nodebrew migrate-package v24
$ ls -l ~/.nodebrew/node/v26.12.1/lib/node_modules
corepack -> ../../../v24.22.1/lib/node_modules/corepack
cowsay -> ../../../v24.22.1/lib/node_modules/cowsay
npm
この状態で nodebrew uninstall v24.22.1 を実行すると、リンク先のディレクトリが消え、corepackのリンクは参照先の無い状態になりました。さらに、実行される npm はPATHで最初に見つかったものです。PATHが current/bin を向いていない状態で試すと、Nodebrewの外にある /usr/local/bin/npm が呼ばれ、Failed installation: corepack で失敗しました。
旧版を消す予定があるなら migrate-package は使わず、旧版で npm ls -g --depth=0 を実行して一覧を控え、新しい版で npm install -g し直してください。なお、Node.js 26はcorepackを同梱しておらず、実測でも26.12.1の lib/node_modules にはnpmしかありませんでした。pnpmやYarnの扱いはcorepackの非推奨化とpnpmの版管理を参照してください。
Nodebrewでよく使うコマンド一覧
| コマンド | 用途 |
|---|---|
nodebrew ls-remote |
入れられる版の一覧 |
nodebrew install v24 |
配布物から導入 |
nodebrew compile v24.22.1 |
ソースからビルド |
nodebrew use v24 |
使う版を切り替え |
nodebrew ls / list |
導入済みの版と現在の版 |
nodebrew ls-all |
配布中と導入済みを両方表示 |
nodebrew alias default v24 |
版に名前を付ける |
nodebrew exec v24 -- npm test |
一時的に別の版で実行 |
nodebrew uninstall v24.22.1 |
版を削除 |
nodebrew prune --dry-run |
各メジャー最新以外の削除候補 |
nodebrew clean all |
ダウンロードしたtar.gzを削除 |
nodebrew selfupdate |
本体を更新 |
uninstall では完全な版番号を指定します。今使っている版を消すと current は空の default を指し、nodebrew ls の表示は current: none になりました。prune は1.2.0で追加されたコマンドで、メジャー版ごとに最新の1つだけを残します。まず --dry-run で消える版を確かめてから実行してください。Homebrewで入れた場合は、selfupdate ではなく brew upgrade nodebrew で更新します。
エラーとPATHのトラブル対処
| 症状 | 原因 | 対処 |
|---|---|---|
nodebrew: command not found |
本体にPATHが通っていない | brew --prefix のbinを確認 |
node -v が古いまま |
別のnodeがPATHの前にある | command -v node で確認 |
Failed to open the file の後に download failed |
保存先の src が無い |
nodebrew setup_dirs |
version not found |
lts 等の未対応の指定 |
版番号で指定 |
is not found(Can not fetch) |
CPU向けの配布物が無い | 上記のARMの注意を参照 |
実測では、setup_dirs を省いて install を実行すると、curlが ~/.nodebrew/src/v24.22.1/ への保存で Failed to open the file ... No such file or directory と curl: (56) Failure writing output to destination を出し、download failed で止まりました。この組み合わせなら setup_dirs で解消します。No such file or directory が無い download failed は、プロキシやネットワークの問題を疑います。PATHを書き換えたのに反映されないときは、ターミナルを開き直すか source で設定ファイルを読み直し、echo $PATH で .nodebrew/current/bin が先頭側にあるかを確かめます。
Nodebrewのアンインストール手順
Nodebrewの削除は、本体・作業用ディレクトリ・PATHの設定の3か所です。brew uninstall だけでは、導入したNode.jsが入っている ~/.nodebrew は残ります。
brew uninstall nodebrew # Homebrewで入れた場合
rm -rf ~/.nodebrew # NODEBREW_ROOTを変えた場合はその場所
# ~/.zshrc から export PATH=$HOME/.nodebrew/current/bin:$PATH の行を消す
exec $SHELL -l
command -v node # 何も出ない、または別の管理ツールのnodeになればよい
グローバルに入れたnpmパッケージも ~/.nodebrew/node/<版>/lib/node_modules にあるため、ディレクトリと一緒に消えます。移行先のツールで使うパッケージは、消す前に npm ls -g --depth=0 で控えておきます。
nvm・fnm・mise・Homebrewのnodeとの違いと選び方
| ツール | 最新版(公開日) | Windows | .nvmrcで切替 | LTS指定 |
|---|---|---|---|---|
| Nodebrew | 1.2.0(2022-03-19) | WSLのみ | なし | なし |
| nvm | 0.40.8(2026-09-21) | WSL・Git Bash | あり | --lts |
| fnm | 1.39.0(2026-03-06) | 対応 | あり | --lts |
| mise | 2026.10.17(2026-10-21) | 対応 | 設定で有効化 | node@lts |
| Volta | 2.0.2(2024-12-05) | 対応 | なし | あり |
版の数字は2026年10月22日に各リポジトリのGitHub Releasesで確認したものです。選び方は次のとおりです。
- Nodebrewを続けてよい場合:macOSで、導入先のOSに対応するNode.jsを1人で切り替える使い方。Apple Silicon向け配布物は16系からありますが、通常の開発ではサポート中の版を選びます。
- fnmかmiseへ移るべき場合:Linux ARMで使う、Windowsでも同じ手順にしたい、リポジトリの
.nvmrcで版をそろえたい、ターミナルごとに別の版を使いたい。fnmはNode.js専用で、miseはNode.jsに加えてPythonやJavaなども同じ設定ファイルで管理できます。miseの導入はmise.tomlでツールを束ねる導入手順で解説しています。 - nvm:シェルスクリプトで実装され、ドキュメントと情報が多いのが利点です。macOS・Linuxで
.nvmrcを使いたいだけなら、nvmで十分です。 - Volta:2025年11月にREADMEで保守終了が告知されたため、新しく選ぶ理由はありません。経緯はVoltaの保守終了とmise移行にあります。
版を切り替える必要がないなら、管理ツールを使わずHomebrewの brew install node でも足ります。2026年10月22日時点で node は26.12.0、LTSの node@24 は24.22.0です。node@24 はkeg-only(既存のコマンドと衝突しないようPATHに自動で入らない形式)なので、PATHに追加する必要があります。Nodebrewと併用する場合は、どちらのnodeを先に見つけさせるかをPATHの順番で決めます。Node.js自体の仕組みはNode.jsの仕組みと版の選び方、入れた版に脆弱性が無いかはNode.jsの脆弱性と対応バージョンで確認できます。
よくある質問
Nodebrewとは何ですか?
Node.jsの複数のバージョンを入れて切り替えるための、Perl製のコマンドラインツールです。nodejs.orgの配布物を版ごとに展開し、nodebrew use で使う版を切り替えます。macOSとLinuxで動き、Homebrewからも入れられます。
M1・M2などApple SiliconのMacでNodebrewは使えますか?
使えます。Node.js 16以降はApple Silicon向けの版が入ります。v15以前はApple Silicon向けの配布物が無いため is not found で止まり、入れるにはRosetta 2で動かしたターミナルからIntel向けの版を入れる必要があります。
NodebrewでLTS版を入れるにはどうすればよいですか?
lts という指定は無いので、nodebrew install v24 のようにLTSのメジャー版を番号で指定します。stable は偶数メジャーの最新を選ぶだけで、2026年10月22日時点ではLTS入り前の26系が入ります。
Nodebrewとnvmはどちらを使えばよいですか?
macOSで1つの版を切り替えて使うだけならNodebrewで足ります。.nvmrc によるプロジェクトごとの切り替えやターミナルごとの版が必要ならnvmです。Nodebrewは2022年3月から更新が無いため、これから新しく選ぶならfnmかmiseも候補に入れてください。
WindowsでNodebrewは使えますか?
PowerShellやコマンドプロンプトでは使えません。Windows向けのzip配布物を取りに行く処理が無いためです。WSLのLinux環境に入れれば動きます。Windowsで直接使うなら、fnm・mise・nvm-windows(2.0.1、2026年10月2日公開)が候補です。