152
122

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

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

Last updated at Posted at 2020-03-16

anyenv から asdf に乗り換えて、新しく記事を書きました。


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の記事を書きたいと思います...!

152
122
3

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
152
122

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?