35
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

asdf で Node.js をバージョン管理する

Last updated at Posted at 2023-07-19

昔々あるところに

大昔にこの記事を書いたのですが、結局現在はanyenvは使っておらずasdfを使用しています。

まぁ、乗り換えた理由は今のプロジェクトでasdfが使われてるから合わせておこうといったモチベーションでしたが、使った感じ良さげだったので共有します。

asdf を使うメリット

anyenv のように nodenv を入れて、node を入れてとする必要がなく、
asdf 入れたら node を入れることができます。(もちろんバージョン管理ができます)

.tool-versions ですべてのツールのバージョンを共有できます。
.nvmrc, .node-versions, .ruby-version と管理していたのを1つのファイルで管理できます。

asdf とは

The Multiple Runtime Version Manager
https://asdf-vm.com

色んなツールや言語のバージョン管理ツールです。

インストール

MacであればHomebrewから簡単にインストールできます。
こちらから環境に合わせて各自インストールしてください。

$ brew install asdf

$ asdf --version
v0.12.0

インストールできたらご利用のシェルに応じて設定します。

$ echo $SHELL
/bin/zsh

私はzshを使用しているので、zshの設定を行います。
異なるシェルを使用していればこちらから合わせて設定してください。

$ echo -e "\n. $(brew --prefix asdf)/libexec/asdf.sh" >> ${ZDOTDIR:-~}/.zshrc

インストールと設定は完了です。

使い方

既存の環境を再構築する

asdfの環境で開発しているプロジェクトに入り、git cloneしてから環境構築する場合の手順です。

$ asdf install

だけでNode.jsに限らず .tool-versions で管理されているツールの指定したバージョンがインストールされます。
既存環境の再構築は一瞬です。

Node.jsの環境を新たに構築する

$ asdf plugin list all
nodejs                        https://github.com/asdf-vm/asdf-nodejs.git

プラグインのリストの中からnodejsを探します。
執筆時点で678件ものプラグインが登録されていました。

$ asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git

これでnodejsプラグインのインストールは完了です。

$ asdf list
nodejs

Nodejsをインストールする

最新版のインストール

$ asdf install nodejs latest

バージョンを指定してインストール

# インストール可能なバージョンの一覧
$ asdf list all nodejs

# バージョンを指定してインストール
$ asdf install nodejs 18.17.0

Node.jsの設定

ローカルにインストールされたNode.jsのどのバージョンを使用するか設定します。

$ asdf list
nodejs
  18.17.0
  20.4.0
# 最新版を使う
$ asdf local nodejs latest

# バージョンを指定して選択
# asdf local nodejs 18.17.0

asdf local するとカレントディレクトリに .tool-versions ファイルが作成されています。

$ cat .tool-versions
nodejs 18.17.0

直接このファイルを書き換えてバージョン設定してもいいし、コマンドで設定してもどちらでも良いです。

$ node --version
v18.17.0

Node.jsがインストールされたことを確認できました。
新たに環境を用意する場合もとても簡単です。

補足: node コマンドを実行できない場合

私はなったことないですが、うまくnodeコマンドを読み込めていなかった場合は下記コマンドでパッケージのバージョンに合わせてshimを再生成してくれるそうです。

$ asdf reshim nodejs

補足: グローバル設定

$ asdf global nodejs latest

asdf global を設定すると $HOME/.tool-versions が作成され、 .tool-versions がない場所ではグローバルの設定が参照されます。

補足: 既存のバージョン管理ツールのファイル

.asdfrc というファイルを配置すると .node-version と他のツールで使用していたファイルを参照できます。

.asdfrc
legacy_version_file = yes

基本的にこの設定は使用しない方が良いです。
プロジェクト内で使用するツールが混在している...などそういった場合に苦肉の策で使うかな...?

補足: Yarn インストール

Nodeのパッケージ管理にnpmではなく、yarnを使いたい場合ですがasdfはyarnのプラグインも提供されています。

$ asdf plugin add yarn https://github.com/twuni/asdf-yarn.git
$ asdf install yarn latest
$ asdf global yarn latest
$ yarn --version
1.22.19

yarn をインストールできました。

補足: yarn インストールでエラー

$ asdf install yarn latest
Missing one or more of the following dependencies: tar, gpg

上記のエラーが出た場合は下記のコマンドを実行する。

$ brew install gpg

asdfのメンテナンス

特にやらなくても良いですが、新しいバージョンを使ってみたいなっていう時はasdf本体やプラグインのアップデートが必要です。

# asdf 本体のアップデート
$ brew upgrade asdf

# asdf すべてのプラグインのアップデート
$ asdf plugin update --all

関連記事

35
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
35
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?