💪

asdfで開発環境を整える

2023/02/18に公開

https://asdf-vm.com/

これがあればだいたい必要なのが揃うので重宝させてもらってます。

asdf is 何?

ざっくり言うと言語やライブラリのバージョン管理を一元管理してくれるツールです。
ディレクトリごとに使うバージョン自動で切り替えてくれます。
.tool-versionsがそれになります。

使い方

ドキュメントの丁寧で各OSや使っているシェルごとに説明があります。

https://asdf-vm.com/guide/getting-started.html#_3-install-asdf

asdfをインストールしたあとはプラグインを追加して、それぞれのバージョンをインストールします。

asdf plugin add {プラグイン名}

プラグインがインストールされたら、インストール可能なバージョンを見て、

asdf list-all {プラグイン名}

対象のバージョンをインストール

asdf install {プラグイン名} {バージョン}

インストールされたら各プロジェクトディレクトリで使うバージョンを指定

asdf local {プラグイン名} {バージョン}

そうすると、.tool-versionsが作成されます。

インストールされている一覧をみるなら、

asdf list {プラグイン名}

グローバル(デフォルト)のバージョンを指定するなら、

asdf global {プラグイン名} {バージョン}

plugin-list-all

asdf plugin-list-all

めちゃめちゃ出てくる😯

弊社で使っているのは全部?出てきました。

  • python
  • nodejs
  • java
  • terraform
  • poetry
  • redis
  • minio
  • postgres

docker不要で開発環境は作れちゃいますね。😊

補足

yarnとjavaはasdfを有効化したあとに下記を追記しました。
fishを使ってます。

# for asdf
source ~/.asdf/asdf.fish

# yarn
set -x fish_user_paths $(yarn global bin) $fish_user_paths
# java
. ~/.asdf/plugins/java/set-java-home.fish

他にも言語やライブラリ毎に追加の設定は必要かも知れませんがほとんどがコマンドのパスが解決できない😭ところかと思います。

以前、$JAVA_HOMEは下記のような解決をしてたりしました。

export JAVA_HOME=$(asdf where java)

Discussion