Lambdaカクテル

京都在住Webエンジニアの日記です

Invite link for Scalaわいわいランド

anyenvからasdfに移行する

anyenvをこれまで使ってきたけど遅いという問題があって、試しに最近流行ってそうなasdfを使ってみることにした。

github.com

ところでasdfはCommon Lispのビルドツールと名前が丸被りしていて、それだけ気に入らない。(リポジトリ上ではasdf-vmという名前になっているのでまあいいか)

移行

移行といっても要点はいくつかしかないはず。

  • asdfインストールする
  • .zshrc からanyenvを呼び出している箇所を外す
  • anyenvで管理していた環境を構築する
  • これまで通り.node-versionといったファイルを読み込めることを確認する

ではやっていきましょう。

asdfインストールする

オフィシャルなドキュメントをまず読めと古事記に書いてあるので読む。

asdf-vm.com

  • 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

感想

動作はそこそこ早くなった気がする。しばらく使ってみて様子を見てみたい。

★記事をRTしてもらえると喜びます
Webアプリケーション開発関連の記事を投稿しています.読者になってみませんか?