テクノロジー
やってみた

ランタイムバージョン管理をasdfに変更してみました

こんにちは中川です。元々、言語系のバージョン管理には anyenv を使っていたのですが、PCを替えたついでということもあり、統一的に様々な言語やツールを管理できる asdf に変更してみました。

インストール

https://github.com/asdf-vm/asdf

まずはインストールを行います。

$ brew install asdf
$ echo -e "\n. $(brew --prefix asdf)/asdf.sh" >> ~/.bash_profile
$ echo -e "\n. $(brew --prefix asdf)/etc/bash_completion.d/asdf.bash" >> ~/.bash_profile

プラグイン追加

各ツールの管理はプラグインを追加することで行なえます。プラグインの一覧は以下のコマンドで確認できます。

$ asdf plugin list all
1password-cli                 https://github.com/NeoHsu/asdf-1password-cli.git
R                             https://github.com/taiar/asdf-R.git
...
zola                          https://github.com/salasrod/asdf-zola.git
zoxide                        https://github.com/nyrst/asdf-zoxide

言語系だけでなく、 awscliterraform などのツールも管理することができます。今回は Node.js のプラグインをインストールしてみます。

$ asdf plugin add nodejs
$ asdf plugin list
nodejs

Node.jsインストール

それでは、Node.js 自体のインストールを行います。インストールできるバージョンの一覧を確認します。

$ asdf list all nodejs
0.1.14
0.1.15
...
16.2.0
16.3.0

まずは、最新版の16.3.0をインストールを試してみます。

$ asdf install nodejs 16.3.0
...
You must install GnuPG to verify the authenticity of the downloaded archives before continuing with the install: https://www.gnupg.org/

macOSでは、`gpg` が必要なようなので追加します。バージョンの切り替えを確認したいので最新版とLTSをインストールします。 (参考: https://github.com/asdf-vm/asdf-nodejs )

$ brew install gpg
$ asdf install nodejs 14.17.1
$ asdf install nodejs 16.3.0

グローバルに利用するバージョンは以下で設定できます。グローバル設定は $HOME/.tool-versions に各バージョン情報が保存されるようです。

$ asdf global nodejs 16.3.0
$ node -v
v16.3.0

特定のディレクトリでのバージョン指定も試してみます。

$ mkdir sample
$ cd sample
$ asdf local nodejs 14.17.1
$ node -v
v14.17.1

プロジェクトによっては、.node-version が既にあり、変更したくないということもあります。その場合は、 $HOME/.asdfrclegacy_version_file = yes を設定すればそちらも参照してくれるようです。

さいごに

今回は、簡単に様々なツールのバージョン管理を行える asdf を試してみました。忙しいとなかなか面倒になってしまいがちではありますが、定期的にPC環境も見直していきたいなと思いました。

author img for Yoshiki Nakagawa
Yoshiki Nakagawa

Web業界の発展を期に、Web開発、特にPHPに目覚めアシアルに入社。 アシアル入社後は、PHP/JavaScriptによるWebシステム開発および、Cordova/Monacaを利用したモバイルアプリの開発に従事。 プロジェクトマネージャー兼プログラマとして、受託開発チームで様々なシステム開発に携わっている。 現在はJavaScriptでのフロントエンド開発及び、Go言語でのバックエンド開発に興味がある。

記事一覧

前の記事へ

次の記事へ

一覧へ戻る

「テクノロジー」カテゴリの最新記事

PAGE TOP