M1 MacにNode.jsをインストールする

以前は nodebrew (or NVM for Windows) を使用していましたが,xenv 系のパッケージで揃えるとわかりやすいかな~と思い,nodenv にしました.

他の言語と異なり,大々的に M1 プロセッサに対応したよー!という発表はなぜかありませんが,v15.3.x で対応したようです.

参考:Apple Silicon Plan - Issue #886 | GitHub

nodenv インストール

Node.js バージョン管理に使用します.Homebrew は事前に M1 プロセッサ対応のものを入れています.

terminal

$ brew install nodenv

実行すると node-build も自動的に入ります.インストールが終了したら環境変数を追加します.

./zshrc

eval "$(nodenv init -)"

また,nodenv が正しくインストールされたかを確認するために追加のパッケージをインストールします.

terminal

$ curl -fsSL https://github.com/nodenv/nodenv-installer/raw/master/bin/nodenv-doctor | bash

Node.js インストール

xenv 系お決まりのバージョン確認からのインストールです.

Python バージョンがデフォルトのまま実行したら Python がないと言われたので,pyenv でインストールしていた M1 対応済みバージョンを有効にしておきます.

pyenv の導入は以下の記事で書いています.

https://blog.mktia.com/pyenv-and-poetry-on-mac-m1

terminal

$ pyenv global 3.9.1
$ nodenv install -l
$ nodenv install 15.9.0

….

Runcat のねこが爆走しているのにインストールが終わりません.通常であれば数秒で終わるのでどう考えてもおかしい.

仕方ないので Rosetta2 でインストールします.一行目でアーキテクチャを確認できます.

terminal

$ uname -m
x86_64
$ nodenv install 15.9.0

Rosetta2 であってもインストール先は $HOME/.nodenv/versions 以下です.Rosetta2 から Universal 環境に戻って以下のコマンドを実行してみると,インストールされていることがわかります.

terminal

$ nodenv versions
  15.9.0

これで Node.js を使用するディレクトリでバージョンを切り替えて使うことができるようになりました.

terminal

$ nodenv local 15.9.0
$ node -v
v15.9.0
$ npm -v
7.5.3

パッケージ管理には Yarn を使っているので追加します.

terminal

$ npm i -g yarn
$ yarn -v
1.22.10

最後に,正しく動作するか確認してみます.既存プロジェクトのディレクトリで package.json 通りに Nuxt.js 環境を作ります.

terminal

$ yarn install
$ yarn dev

✔ Client
  Compiled successfully in 10.32s

✔ Server
  Compiled successfully in 9.64s

No issues found.

問題なく実行できました.ローカルホストも動いています.

インストールだけなぜか詰まりましたが,その他は Universal 環境で大丈夫そうです.