anyenvをこれまで使ってきたけど遅いという問題があって、試しに最近流行ってそうなasdfを使ってみることにした。
ところでasdfはCommon Lispのビルドツールと名前が丸被りしていて、それだけ気に入らない。(リポジトリ上ではasdf-vmという名前になっているのでまあいいか)
移行
移行といっても要点はいくつかしかないはず。
- asdfインストールする
.zshrc
からanyenvを呼び出している箇所を外す- anyenvで管理していた環境を構築する
- これまで通り
.node-version
といったファイルを読み込めることを確認する
ではやっていきましょう。
asdfインストールする
オフィシャルなドキュメントをまず読めと古事記に書いてあるので読む。
- gitが必須。まあ現代のWeb開発ではだいたい入ってるので飛ばす
- asdfをgit cloneしてくる
asdfをgit cloneする箇所は自動化したいので.zshrc
に追記しておく。
## ASDF if [ ! -d ~/.asdf ] ; then echo '*** Installing ASDF into ~/.asdf ...' git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.9.0 fi . ~/.asdf/asdf.sh # append completions to fpath fpath=(${ASDF_DIR}/completions $fpath)
zplugを使うこともできるけれど、素朴にgitを使っておいたほうが後々困らなそうなのでgitにしておいた。
anyenv呼び出している箇所を外す
これはやるだけなので割愛。
anyenvで管理していた環境を構築する
自分の環境だと以下を構築する必要があった。
- ruby
- go
- perl
- node
asdfはプラグインアーキテクチャになっていて、言語ごとにasdf用のpluginが用意されており、それをインストールすることでその言語がインストールできるようになる、という世界観になっている。つまり、rubyを使いたければまずruby用のプラグインが必要で、バージョニングはその後ということ。
各種プラグインを導入しておく。
## ASDF Plugin asdf plugin add ruby https://github.com/asdf-vm/asdf-ruby.git asdf plugin add golang https://github.com/kennyp/asdf-golang.git asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git asdf plugin add perl https://github.com/ouest/asdf-perl.git
URLの部分は省略できるみたいだけれどデバッグしやすさのために書いておく。
2回目以降はこういう表示になってしまう。
Plugin named ruby already added Plugin named golang already added Plugin named nodejs already added Plugin named perl already added
ちょっと不恰好。asdf plugin-list
するとリストが取れるので気を利かせることもできるけれど、そこまでする必要はないかと思ったのでこのままにしておく。.zshrc
で時間かかっているようでは本末転倒なため。
あとは必要に応じてglobalにrubyをインストールしたりする。
asdf install ruby latest asdf global ruby latest
感想
動作はそこそこ早くなった気がする。しばらく使ってみて様子を見てみたい。