自動で Node.js のバージョンを切り替えてくれる fnm を使ってみた
Node.js のバージョン管理といえば nodenv
とか nvm
があるけど、その新しい仲間がまた出てきたみたい。
それが fnm
くん。Rust製で、マルチプラットフォームかつ高速に動くのが売りらしい。
Node.js のバージョンを指定してインストールできる
fnm install --latest # 最新版をインストールする fnm install --lts # 最新のLTS版をインストールする fnm install 18 # v18系の最新版をインストールする fnm install 19.5.0 # 見たまま
特定のバージョンを使用する
fnm use 18 # 上でインストールした v18系を使う
自動バージョン切り替え
面白いのは、ディレクトリに応じて自動的にNode.jsのバージョンを切り替えてくれること。
ファイル名 .node-version
というテキストファイルに、バージョン番号を入れておくだけ。
ちなみに .nvmrc
ファイルにも対応している。
> node --version v19.5.0
という状況だとして、
node --version > .node-version
とすれば、次にこのディレクトリに入る時には自動でバージョンを切り替えてくれる。
fnm自体のインストール
brew install fnm
Windows の方は scoop
もしくは chocolatey
を使ってこのように
scoop install fnm # もしくは choco install fnm
Rust製なのでパッケージマネージャー cargo
を使ってもインストールできる
cargo install fnm
そのほか、ビルド済みバイナリーもあるとのこと。
使う準備
動かすためには、シェルに環境変数を読み込ませる必要があるみたい。
以下の一行を、プロファイル(.bashrc
や .zshrc
、Powershell のプロファイル)に含めておくこと。
eval "$(fnm env --use-on-cd)" # bash もしくは zsh の場合 fnm env --use-on-cd | Out-String | Invoke-Expression # Powershell の場合
そのほかのコマンド
# インストールされているバージョンの一覧を取得 (systemはfnmで入れたものではなく、最初からリストにあった。fnm外でインストールしたものを使うときに使うのかな?) > fnm list * v16.19.0 * v18.13.0 lts-latest * v19.5.0 default * system # 現在使用中のバージョンを表示 > fnm current v19.5.0 # インストール可能なバージョンの一覧を表示 > fnm list-remote (長いので省略) # 特定のバージョンに別名を付けられる > fnm alias 19 hogehoge # とすると、 > fnm list * v16.19.0 * v18.13.0 lts-latest * v19.5.0 default, hogehoge # ←名前が追加されて、 * system > fnm use hogehoge Using Node for alias hogehoge # その名前で呼び出せる。 > fnm unalias hogehoge # 別名を消すときはこうする
今日はここまで。