Skip to content
Latchkey

asdf vs nvm: CIに適したバージョンマネージャーは?

nvmはNodeのバージョンのみを管理します。asdfは1つのツールと単一の.tool-versionsファイルから多くの言語を管理します。

nvmは.nvmrcで駆動される、Nodeに特化したバージョンマネージャーです。asdfは多言語バージョンマネージャーで、プラグインを介してNode、Python、Rubyなどを扱い、1つの.tool-versionsファイルで固定します。

asdfnvm
管理する言語多数(プラグイン)Nodeのみ
pinファイル.tool-versions.nvmrc
最適な用途多言語リポジトリNodeのみのリポジトリ
CIでの使用言語ごとにプラグインをインストール多くはsetup-node経由
セットアップの重さ重め(プラグイン)軽量

CIでは

Nodeのみのリポジトリでは、nvm(または.nvmrcを読むGitHubのsetup-node)がバージョンを固定する最も軽量な方法です。多言語リポジトリでは、asdfがすべての言語を1つの.tool-versionsファイルで固定するため、単一のツールでローカルとCIの間でNode、Python、Rubyのバージョンを一貫させられます。asdfはプラグインごとのセットアップが加わりますが、複数の別々のバージョンマネージャーを不要にします。

固定してキャッシュする

.tool-versionsまたは.nvmrcをコミットして、CIが正確なローカルバージョンを使うようにし、可能な限りインストール済みツールチェーンをキャッシュしてください。ツールチェーンのインストールはCIのrunner上で実行されます。より高速なマネージドrunnerは、複数言語をインストールする必要があるコールドセットアップを短縮します。

結論

最小限のセットアップを望むNodeのみのリポジトリ: nvm(または.nvmrcを使ったsetup-node)。すべての言語を1つのツールで扱いたい多言語リポジトリ: コミットした.tool-versionsを使うasdf。いずれの場合も、再現可能なCIのためにバージョンファイルを固定してください。

関連ガイド