昔々あるところに
大昔にこの記事を書いたのですが、結局現在はanyenvは使っておらずasdfを使用しています。
まぁ、乗り換えた理由は今のプロジェクトでasdfが使われてるから合わせておこうといったモチベーションでしたが、使った感じ良さげだったので共有します。
asdf を使うメリット
anyenv のように nodenv を入れて、node を入れてとする必要がなく、
asdf 入れたら node を入れることができます。(もちろんバージョン管理ができます)
.tool-versions
ですべてのツールのバージョンを共有できます。
.nvmrc
, .node-versions
, .ruby-version
と管理していたのを1つのファイルで管理できます。
asdf とは
The Multiple Runtime Version Manager
https://asdf-vm.com
色んなツールや言語のバージョン管理ツールです。
インストール
MacであればHomebrewから簡単にインストールできます。
こちらから環境に合わせて各自インストールしてください。
$ brew install asdf
$ asdf --version
v0.12.0
インストールできたらご利用のシェルに応じて設定します。
$ echo $SHELL
/bin/zsh
私はzshを使用しているので、zshの設定を行います。
異なるシェルを使用していればこちらから合わせて設定してください。
$ echo -e "\n. $(brew --prefix asdf)/libexec/asdf.sh" >> ${ZDOTDIR:-~}/.zshrc
インストールと設定は完了です。
使い方
- asdfのコマンド一覧
- https://asdf-vm.com/manage/commands.html
-
asdf
コマンドで見れます
- asdfのプラグイン一覧
- https://github.com/asdf-vm/asdf-plugins
-
asdf plugin list all
コマンドで見れます。
-
.tool-versions
,.asdfrc
などの構成ファイルについて
既存の環境を再構築する
asdfの環境で開発しているプロジェクトに入り、git cloneしてから環境構築する場合の手順です。
$ asdf install
だけでNode.jsに限らず .tool-versions
で管理されているツールの指定したバージョンがインストールされます。
既存環境の再構築は一瞬です。
Node.jsの環境を新たに構築する
$ asdf plugin list all
nodejs https://github.com/asdf-vm/asdf-nodejs.git
プラグインのリストの中からnodejsを探します。
執筆時点で678件ものプラグインが登録されていました。
$ asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git
これでnodejsプラグインのインストールは完了です。
$ asdf list
nodejs
Nodejsをインストールする
最新版のインストール
$ asdf install nodejs latest
バージョンを指定してインストール
# インストール可能なバージョンの一覧
$ asdf list all nodejs
# バージョンを指定してインストール
$ asdf install nodejs 18.17.0
Node.jsの設定
ローカルにインストールされたNode.jsのどのバージョンを使用するか設定します。
$ asdf list
nodejs
18.17.0
20.4.0
# 最新版を使う
$ asdf local nodejs latest
# バージョンを指定して選択
# asdf local nodejs 18.17.0
asdf local
するとカレントディレクトリに .tool-versions
ファイルが作成されています。
$ cat .tool-versions
nodejs 18.17.0
直接このファイルを書き換えてバージョン設定してもいいし、コマンドで設定してもどちらでも良いです。
$ node --version
v18.17.0
Node.jsがインストールされたことを確認できました。
新たに環境を用意する場合もとても簡単です。
補足: node コマンドを実行できない場合
私はなったことないですが、うまくnodeコマンドを読み込めていなかった場合は下記コマンドでパッケージのバージョンに合わせてshimを再生成してくれるそうです。
$ asdf reshim nodejs
補足: グローバル設定
$ asdf global nodejs latest
asdf global
を設定すると $HOME/.tool-versions
が作成され、 .tool-versions
がない場所ではグローバルの設定が参照されます。
補足: 既存のバージョン管理ツールのファイル
.asdfrc
というファイルを配置すると .node-version
と他のツールで使用していたファイルを参照できます。
legacy_version_file = yes
基本的にこの設定は使用しない方が良いです。
プロジェクト内で使用するツールが混在している...などそういった場合に苦肉の策で使うかな...?
補足: Yarn インストール
Nodeのパッケージ管理にnpmではなく、yarnを使いたい場合ですがasdfはyarnのプラグインも提供されています。
$ asdf plugin add yarn https://github.com/twuni/asdf-yarn.git
$ asdf install yarn latest
$ asdf global yarn latest
$ yarn --version
1.22.19
yarn
をインストールできました。
補足: yarn インストールでエラー
$ asdf install yarn latest
Missing one or more of the following dependencies: tar, gpg
上記のエラーが出た場合は下記のコマンドを実行する。
$ brew install gpg
asdfのメンテナンス
特にやらなくても良いですが、新しいバージョンを使ってみたいなっていう時はasdf本体やプラグインのアップデートが必要です。
# asdf 本体のアップデート
$ brew upgrade asdf
# asdf すべてのプラグインのアップデート
$ asdf plugin update --all
関連記事