プロジェクトごとにNode.jsバージョンをスマートに管理:.nvmrcファイルと自動化ツールの活用術
.nvmrc ファイルがあるディレクトリで nvm use を自動実行する
Node.js のバージョン管理ツールである nvm
では、.nvmrc
ファイルを使用して、特定のディレクトリ内で使用する Node.js のバージョンを指定できます。しかし、毎回手動で nvm use
コマンドを実行するのは煩わしいですよね。そこで、今回紹介するのは、.nvmrc
ファイルがあるディレクトリに移動するたびに、自動的に nvm use
コマンドを実行するスクリプトです。
動作原理
このスクリプトは、シェルスクリプトを使用して実現します。具体的には、以下の手順を実行します。
- 現在いるディレクトリから
.nvmrc
ファイルを検索します。 .nvmrc
ファイルが見つかった場合は、その内容に記載されている Node.js のバージョンを取得します。- 取得したバージョンを使用して
nvm use
コマンドを実行し、Node.js のバージョンを切り替えます。
スクリプト例
#!/bin/bash
# 現在いるディレクトリから .nvmrc ファイルを検索
NVMRC_FILE=$(find . -type f -name .nvmrc | head -n 1)
# .nvmrc ファイルが見つかったら
if [ -n "$NVMRC_FILE" ]; then
# .nvmrc ファイルの内容に記載されている Node.js のバージョンを取得
NODE_VERSION=$(cat "$NVMRC_FILE")
# nvm use コマンドを実行して Node.js のバージョンを切り替える
nvm use "$NODE_VERSION"
fi
使用方法
- 上記のスクリプトを
nvm-auto-use.sh
などの名前で保存します。 - 保存したスクリプトファイルをプロジェクトディレクトリに配置します。
- シェルの設定ファイル(例:
.bashrc
または.zshrc
)に以下の行を追加します。
if [ -d "$DIR" ]; then
. "$DIR/nvm-auto-use.sh"
fi
- シェルを再起動します。
注意事項
- このスクリプトは、bash などの Bourne 系シェルでのみ動作します。
.nvmrc
ファイル内の Node.js のバージョンは、nvm --help
で確認できる形式で記述する必要があります。
上記以外にも、avn
や nave
などのツールを使用して、.nvmrc
ファイルに基づいた Node.js バージョンの自動切り替えを実現することができます。これらのツールは、より高度な機能を提供している場合があるため、必要に応じて検討してみてください。
#!/bin/bash
# Search for .nvmrc file from the current directory
NVMRC_FILE=$(find . -type f -name .nvmrc | head -n 1)
# If .nvmrc file is found
if [ -n "$NVMRC_FILE" ]; then
# Get the Node.js version specified in the .nvmrc file
NODE_VERSION=$(cat "$NVMRC_FILE")
# Use nvm use command to switch Node.js version
nvm use "$NODE_VERSION"
fi
How to use:
- Save the script as
nvm-auto-use.sh
in your project directory. - Add the following line to your shell's configuration file (e.g.,
.bashrc
or.zshrc
):
if [ -d "$DIR" ]; then
. "$DIR/nvm-auto-use.sh"
fi
- Restart your shell.
Explanation:
Additional notes:
- This script assumes that the Node.js version specified in the
.nvmrc
file is in a format thatnvm
understands. You can check the supported formats using thenvm --help
command. - This script only works for Bourne-like shells such as
bash
andzsh
. If you're using a different shell, you may need to adapt the script accordingly.
Alternatives:
- You can also use tools like
avn
ornave
to automatically switch Node.js versions based on.nvmrc
files. These tools may offer more features and flexibility than the simple shell script presented here.
.nvmrc ファイルがあるディレクトリで nvm use を自動実行する:その他の方法
avn ツールを使う
avn
は、Node.js のバージョン管理を容易にするためのコマンドラインツールです。.nvmrc
ファイルを自動的に読み取り、それに応じて Node.js のバージョンを切り替える機能が備わっています。
avn のインストール
npm install -g avn
avn の使い方
- プロジェクトディレクトリに
.nvmrc
ファイルを作成し、使用する Node.js のバージョンを記述します。 avn init
コマンドを実行して、avn をプロジェクトに初期化します。- 以降、そのディレクトリに移動するたびに、avn が自動的に
.nvmrc
ファイルを読み取り、Node.js のバージョンを切り替えます。
curl -sL https://install.nave.sh | sh
nave install
コマンドを実行して、.nvmrc
ファイルに指定された Node.js バージョンをインストールします。
ZSH の precmd フックを使う
ZSH シェルを使用している場合は、precmd
フックを使用して、.nvmrc
ファイルに基づいて Node.js のバージョンを自動的に切り替えることができます。
手順:
.zshrc
ファイルに以下の行を追加します。
precmd() {
local nvm_dir
nvm_dir=$(nvm dir)
if [ -d "$nvm_dir" ]; then
. "$nvm_dir/nvm.sh"
nvm use $(nvm current --silent)
fi
}
fish shell の nvm.fish 関数を使う
~/.config/fish/functions/nvm.fish
ファイルを作成し、以下の内容を記述します。
function nvm_use
if test -d (status is-interactive); then
set -l nvm_dir (nvm dir)
if test -d $nvm_dir; then
source $nvm_dir/nvm.sh
nvm use (nvm current --silent)
end
end
end
status -d fish_user_key_bindings; and status is-interactive
status -q right-prompt 'nvm use $(nvm current --silent)'
end
- fish shellを再起動します。
- 上記の方法は、それぞれ異なる動作や制約を持つ場合があります。使用する前に、各方法の詳細をドキュメントで確認することをお勧めします。
- 特に、ZSH の
precmd
フックと fish shell のnvm.fish
関数は、.nvmrc
ファイルの変更を検出して Node.js のバージョンを切り替えるタイミングが異なることに注意してください。
これらの方法は、.nvmrc
ファイルがあるディレクトリに移動するたびに、手動で nvm use
コマンドを実行することなく、Node.js のバージョンを自動的に切り替えるための柔軟な選択肢
javascript node.js shell