nodebrew のインストール
nodebrew は node のバージョンを切り替えて使うことができる管理ツール。
環境によっては、node の特定のバージョンでしか動かせない場合があり、バージョンを切り替えたいケースがあるため。
brew を使うには、予め homebrew をインストールしておく必要がある。(インストール方法はこちら)
% brew install nodebrew
リモートのバージョンを一覧
既に用意されているインストール元のバージョンが一覧できる。
このバージョンを指定してインストールする。
% nodebrew ls-remote
v0.0.1 v0.0.2 v0.0.3 v0.0.4 v0.0.5 v0.0.6
:
io@v1.0.0 io@v1.0.1 io@v1.0.2 io@v1.0.3 io@v1.0.4 io@v1.1.0 io@v1.2.0 io@v1.3.0
:
v と io があるが、途中で io にフォークして、v4.0.0 から統合された様なので、v4.0.0 以降を使っている場合は特に関係ない。
node のインストール
バイナリファイルを直接インストールする。
例えば v14.20.0 を使いたい場合は以下の様に実行する。
% nodebrew install-binary v14.20.0
MacのM1,M2チップのマシンだとエラー!
Mac の M1,M2 チップのマシンの場合、v16.0.0より前は、install-binary でエラーになる。
M1,M2 は arm扱いになるが、arm 用のバイナリがないため。
Can not fetch: https://nodejs.org/dist/v14.20.0/node-v14.20.0-darwin-arm64.tar.gz
エラーの回避策
その場合はコンパイルを行う。
~/.nodebrew/src ディレクトリを確認し、なければ作成しておく。
% nodebrew compile v14.20.0
カレントの設定
ローカルにインストールされているものは nodebrew ls で一覧できる。
カレントで使用したいバージョンを指定する。
% nodebrew use v14.20.0
パスの設定
そのままではパスが効いていないので、以下を実行する。
bash の場合
% echo 'export PATH=$HOME/.nodebrew/current/bin:$PATH' >> ~/.bashrc
% source ~/.bashrc
zshの場合
% echo 'export PATH=$HOME/.nodebrew/current/bin:$PATH' >> ~/.zshrc
% source ~/.zshrc
要らないバージョンを消す場合は?
% nodebrew uninstall バージョン
これで削除されるが、~/.nodebrew/src/ 以下のディレクトリは削除されない。
こちらも不要なディレクトリは削除した方が良い。
Python2 !!!!
macOS v12.3〜 Pyhton2が同梱されなくなった。
でも、node-gyp とかは Python3 非対応なので、ビルドには Python2 が必要。
なのに brew install python@2 はリポジトリから既に削除されていて見つからない。
brew install python では Python3 が入ってしまう。
このジレンマ。
pyenv を使う。
pyenv は python の複数バージョンを切り替えられるツール。
brew でインストールして、パスが通る様に設定を行う。
(bash の場合は .zshrc を .bashrc に読み替え)
% brew install pyenv
% echo 'eval "$(pyenv init -)"' >> ~/.zshrc
# 最下に以下の行を追加する。
% vim ~/.zshrc
alias brew='env PATH="${PATH//$(pyenv root)¥/shims:/}" brew'
% source ~/.zshrc
python2 をインストール
# インストールできるバージョンを一覧
% pyenv install --list
# 2系の latest は 2.7.18 なのでそれをインストール
% pyenv install 2.7.18
# インストールしたバージョンを global に設定
% pyenv global 2.7.18
# バージョン確認
% python --version
Python 2.7.18
python3 は入ってるよね。
ちなみに Python3 はあらかじめ同梱されているはず。
% Python3 --version
Python 3.8.9
最新版や、別バージョンを使いたい場合は、python2 と同様にインストールする。
ncu(npm-check-updates)
package.json のライブラリが古くなる問題
node を使っていると package.json のライブラリのバージョンが古くなっているのが気になる。
なので、それをチェックしてくれる node-check-updates を使ってみる、
node-check-updates のインストール
% npm i -g npm-check-updates
アップデートチェック
以下のコマンドを実行すると一覧が表示される。
% ncu
Checking xxxx/package.json
[====================] 45/45 100%
axios ^0.19.2 → ^0.27.2
chart.js ^2.9.4 → ^3.8.2
core-js ^3.21.1 → ^3.24.0
:
変更後のバージョン番号は色分けして表示される。
・赤がメジャーアップグレード
・青がマイナーアップグレード
・緑がパッチのアップグレード
package.json の更新
以下を実行すると package.json も更新してくれるが、流石にメジャーアップグレードを適用してしまうと動かなくなる可能性が高いので要注意。
なので、ここから先は自己責任で。動いている環境を丸々バックアップしておけば安心かも。
% ncu -u
マイナーバージョンアップだけ適用したい場合は --target minor をつけて実行する。
% ncu -u --target minor
パッチだけあてたい場合は --target patch をつけて実行する。
% ncu -u --target patch
後は、package-lock.json と /node_modulets を消して
npm cache clean --force でキャッシュをクリアして
npm install でライブラリを入れ替えればいいかな。