Homebrew 経由の anyenv 経由の nodenv 経由で Node.js をインストールする


Node.jsをインストールしたい場合、公式サイトから直接インストールしても問題ありませんが、複数のプロジェクトで異なるバージョンが使われているとバージョン切り替え等の管理が煩雑になってしまいます。

よりお手軽にバージョン切り替えする方法を模索したいと思います。

Node.js 管理ツール多すぎ問題

  • 公式のインストーラ を使う場合
  • Homebrew 経由でインストールする場合
  • nodist 経由でインストールする場合
  • nvm 経由でインストールする場合
  • nodebrew 経由でインストールする場合
  • ndenv 経由でインストールする場合
  • nodenv 経由でインストールする場合
  • anyenv 経由でインストールする場合 (当記事)

いや、多すぎんだろ!!😱

各Node.js管理ツールの問題

公式のインストーラ & Homebrew 経由でインストールした時の問題

  • 複数のNodeバージョンをインストールできない。

複数のプロジェクトでNodeのバージョンが異なってたら切り替えがめんどくさい😡

nodist 経由でインストールした時の問題

  • nodistはWindows用のツールだった😣

nodebrew & nvm 経由でインストールした時の問題

複数のNodeバージョンをインストールできるようになりました。

  • nodebrew use <version>, nvm use <version> でバージョン切り替えがめんどくさい

再インストールする必要はないが、コマンドを打つのでさえめんどくさい😇

ndenv 経由でインストールした時の問題

.node-version ファイルが配置されていれば自動でバージョン切り替えできる😍

  • パッケージが非推奨になった😭
  • nodenv がオススメだよと教えてもらう

nodenv 経由でインストールした時の問題

デフォルトパッケージプラグインもあって nodenv めがっさ便利☺️

  • nodenv, goenv, phpenv, pyenv, rbenv... ***env何個あるねん!
  • ~/.zshrc の初期設定がかさばる問題
    • 複数の **env ツールを入れない場合は良いと思う

anyenv 経由でインストールした時

🥰

既にNode.jsが入っている人

こちらの記事を参考にアンインストールしてクリーンな状態にしてください。

インストールの流れ

  1. Homebrewのインストール
  2. anyenvのインストール
  3. nodenvのインストール
  4. Node.jsのインストール

Homebrew 経由の anyenv 経由の nodenv 経由で Node.js をインストールします。。

Homebrew をインストールする

  • https://brew.sh/index_ja
  • macOS用パッケージマネージャー
  • コマンドラインで実行できてパッケージ間の依存関係も解決してくれる

anyenv をインストールする

$ brew install anyenv
$ anyenv install --init
$ echo 'eval "$(anyenv init -)"' >> ~/.zshrc
$ exec $SHELL -l

$ anyenv -v
anyenv 1.1.1

anyenv-update プラグイン をインストールする

$ mkdir -p $(anyenv root)/plugins
$ git clone https://github.com/znz/anyenv-update.git $(anyenv root)/plugins/anyenv-update

使い方

$ anyenv update
$ nodenv install -l

anyenv, anyenv のプラグイン, **env, **env プラグインをまとめてアップデートしてくれます。

  • nodenv install -l 等でインストールしたいバージョンが見つからなかった時に実行してください。

anyenv-git プラグイン をインストールする

$ mkdir -p $(anyenv root)/plugins
$ git clone https://github.com/znz/anyenv-git.git $(anyenv root)/plugins/anyenv-git

使い方

* anyenvでインストールした全ての**env系とインストールされているプラグインのアップデート
$ anyenv git pull
* ガベージコレクション(ゴミファイルの削除)
$ anyenv git gc
* 全てのリモートリポジトリを表示
$ anyenv git remote -v
* gitのステータス表示
$ anyenv git status

**env, **env のプラグインの git 操作をまとめて実行できます。

anyenv でインストール可能なenv系一覧

$ anyenv install -l
  Renv
  crenv
  denv
  erlenv
  exenv
  goenv
  hsenv
  jenv
  luaenv
  nodenv
  phpenv
  plenv
  pyenv
  rbenv
  sbtenv
  scalaenv
  swiftenv
  tfenv

# anyenv でインストールしたenvツールの一覧
$ anyenv versions

anyenv 経由で nodenv をインストールする

$ anyenv install nodenv
$ exec $SHELL -l

nodenv-default-packages プラグイン

  • nodenv install <バージョン番号> の時に指定したパッケージをグローバルインストールする
$ touch $(nodenv root)/default-packages

使い方

$ vim $(nodenv root)/default-packages
typescript

nodenv 経由で Node.js をインストールする

$ nodenv install -l

$ nodenv install 13.11.0
$ nodenv global 13.11.0

$ node -v
v13.11.0
$ npm -v
6.13.7

特定のディレクトリだけNodeバージョンを切り替える

$ nodenv install 10.13.0
$ mkdir testdir
$ cd testdir
$ nodenv local 10.13.0

$ node -v
v10.13.0
$ npm -v
6.4.1

nodenv local x.x.x を実行すると .node-version ファイルが作成される。

$ cat .node-version
10.13.0

プロジェクトルートに配置しておけば、自動的にバージョンを切り替えてくれる。

nodenv-default-packages 後からパッケージをグローバルインストール

# 指定したバージョンにパッケージをグローバルインストールする
$ nodenv default-packages install 10.13.0

# すべてのバージョンにパッケージをグローバルインストールする
$ nodenv default-packages install --all

2020.03.22 追記: asdf-vm

Twitterでasdf-vm というツールを教えてもらいました!

anyenv > nodenv と経由の必要がなく、
対応している言語(MySQL等の言語以外も)も多いようです。

また、 .tool-versions ファイルを dotfiles で管理していれば asdf install で全部よしなにインストールしてくれます。

とても便利そうなので、使ったらasdfの記事を書きたいと思います...!