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が入っている人
こちらの記事を参考にアンインストールしてクリーンな状態にしてください。
インストールの流れ
- Homebrewのインストール
- anyenvのインストール
- nodenvのインストール
- Node.jsのインストール
Homebrew 経由の anyenv 経由の nodenv 経由で Node.js をインストールします。。
Homebrew をインストールする
- https://brew.sh/index_ja
- macOS用パッケージマネージャー
- コマンドラインで実行できてパッケージ間の依存関係も解決してくれる
anyenv をインストールする
- https://github.com/anyenv/anyenv
- 様々な
**env
系ツールをまとめて管理する
$ brew install anyenv
$ anyenv install --init
$ echo 'eval "$(anyenv init -)"' >> ~/.zshrc
$ exec $SHELL -l
$ anyenv -v
anyenv 1.1.1
anyenv-update プラグイン をインストールする
- https://github.com/znz/anyenv-update
-
**env
系ツールを一括アップデートするプラグイン
$ 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 をインストールする
- https://github.com/nodenv/nodenv
- 複数のNode.jsのバージョンを管理する
$ 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でファイナルアンサー、なところにasdfという追加の選択肢を投げつけていきたい https://t.co/oBvXuTqFd2
— n (@n_1215) March 22, 2020
anyenv > nodenv と経由の必要がなく、
対応している言語(MySQL等の言語以外も)も多いようです。
また、 .tool-versions
ファイルを dotfiles で管理していれば asdf install
で全部よしなにインストールしてくれます。
とても便利そうなので、使ったらasdfの記事を書きたいと思います...!