LoginSignup
8
6

More than 1 year has passed since last update.

【Mac+Node】Mac に node.js(と Python2)をインストール。時々 ncu。

Last updated at Posted at 2022-07-25

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 でライブラリを入れ替えればいいかな。

8
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6