created: 2023-08-10T10:35:42.515Z

pyenv, nodebrew から asdf への移行作業

まず asdf 本体をインストールして plugin も入れる。

brew install asdf
asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git
asdf plugin add python
# バージョン管理ソフト使ってなかったけど入れる
asdf plugin add perl
asdf plugin add golang https://github.com/kennyp/asdf-golang.git

既存のpyenv使用箇所を探す

次に .(pyenv|nodebrew) と書いてある .envrc ファイルを探す。

find ~/.ghq -type d -name 'node_modules' -prune -o -type l,f -name '*.envrc*' \
    | grep -v 'node_modules' \
    | xargs -I{} grep -lE '.(pyenv|nodebrew)' {} \
    | tee /tmp/_

使われている nodejs のバージョンを一覧から xargs で全部入れ

cat /tmp/_ \
    | xargs cat \
    | perl -nlE '/nodebrew\/node\/v(.+?)\/bin/ and say $1' \
    | sort | uniq \
    | xargs asdf install nodejs

れたらかっこよかったのだが、 apple シリコンだと古い nodejs はビルドが必要だったりして辛そうだった。 v16以降のメジャーバージョンの最新を見繕ってインストールした。

.bashrc

こんな分岐を入れながら設定する。

if [ -e "$HOMEBREW_PREFIX/bin/asdf" ]; then
  ASDF_PREFIX=$(brew --prefix asdf)
  # shellcheck source=/dev/null
  source "$ASDF_PREFIX/libexec/asdf.sh"
  # shellcheck source=/dev/null
  source "$ASDF_PREFIX/etc/bash_completion.d/asdf.bash"
fi

.envrc の更新

.tool-versions というファイルで管理するのが asdf の流儀なようだが、既存のプロジェクトは .envrc で管理してみる。

環境変数を入れておいても同様に動作してくれるa。

export ASDF_PYTHON_VERSION=3.11.4
CAREER SKILLS ソフトウェア開発者の完全キャリアガイド
[ad] CAREER SKILLS ソフトウェア開発者の完全キャリアガイド
ジョン・ソンメズ, 長尾 高弘 (Kindle版)