Help us understand the problem. What is going on with this article?

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何個あるねん!
  • ~/.bash_profile の初期設定がかさばる問題
    • 複数の **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 init
$ echo 'eval "$(anyenv init -)"' >> ~/.bash_profile
$ 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
yarn
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の記事を書きたいと思います...!

ucan-lab
Backend Developer at ROLO. I love PHP and I'm focusing on Laravel, Docker, GraphQL.
https://u-can.pro
miraito-inc
システムデザインを中心に置いた開発により高品質で使いやすいシステムを提供いたします。業務システム構築、アプリ開発、コンサルティングまで幅広く手がけています。
https://miraito-inc.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした