پیکربندی nvmrc
معرفی
هنگام توسعه چندین پروژه، هر پروژه ممکن است به نسخه متفاوتی از Node.js نیاز داشته باشد. در چنین مواردی، باید نسخه Node.js را برای هر پروژه با اجرای دستورات nvm install و nvm use در ترمینال برای نصب و جابجایی نسخهها مشخص کنیم.
با این حال، اجرای دستی دستورات در ترمینال هر بار دشوار میشود، به ویژه با افزایش تعداد پروژهها. فراموش کردن جابجایی نسخه یا جابجایی به نسخه اشتباه آسان است، که میتواند باعث شود پروژهها راهاندازی نشوند یا در حین اجرا با خطا مواجه شوند.
اینجاست که به روشی برای مدیریت نسخههای Node.js و جابجایی خودکار بین آنها نیاز داریم، و اینجاست که .nvmrc وارد عمل میشود.
.nvmrc چیست؟
از توضیحات بالا میتوانید بفهمید که فایل .nvmrc برای مدیریت نسخه Node.js پروژه ما استفاده میشود. این فایل بسیار ساده است: فقط شامل متنی است که یک نسخه Node.js را که nvm میتواند تشخیص دهد نشان میدهد، مانند v18.12.0.
چگونه از فایل .nvmrc استفاده کنیم؟
میتوانید یک فایل .nvmrc با محتوایی که یک شماره نسخه Node.js یا متن دیگری است که nvm میتواند بفهمد ایجاد کنید. برای جزئیات، میتوانید nvm --help را در ترمینال تایپ کنید.
با فایل .nvmrc، هنگامی که دستوراتی مانند nvm use، nvm install، nvm exec، nvm run و nvm which را در ترمینال بدون مشخص کردن نسخه اجرا میکنید، نسخه مشخص شده در فایل .nvmrc استفاده میشود.
ایجاد فایل .nvmrc
مثلاً، در دایرکتوری فعلی، برای اینکه nvm آخرین نسخه 18.12، آخرین نسخه LTS یا آخرین نسخه Node.js را مشخص کند، میتوانید از دستور echo برای ایجاد فایل .nvmrc استفاده کنید:
bash
$ echo "18.12" > .nvmrc
# تنظیم به آخرین نسخه LTS
$ echo "lts/*" > .nvmrc
# تنظیم به آخرین نسخه
$ echo "node" > .nvmrcدستوراتی مانند nvm use ساختار دایرکتوری را از دایرکتوری فعلی به سمت بالا پیمایش میکنند تا فایل .nvmrc را پیدا کنند. این به این معنی است که اجرای دستوراتی مانند nvm use در هر زیردایرکتوری از دایرکتوری با فایل .nvmrc همچنان از آن فایل .nvmrc استفاده میکند.
فایل .nvmrc باید شامل یک <version> باشد که مطابق با آنچه در nvm --help فهرست شده است، به دنبال آن یک خط جدید. فاصلههای انتهایی مجاز نیست و یک خط جدید انتهایی مورد نیاز است.
همانطور که در تصویر زیر نشان داده شده است، پس از v14.21.3 فاصلهای وجود ندارد، فقط یک خط شکست.

یکپارچگی عمیق با ترمینالهای shell
میتوانید از avn برای یکپارچگی عمیق با shell خود و فراخوانی خودکار nvm هنگام تغییر دایرکتوری استفاده کنید.
اگر راهحل سبکوزن را ترجیح میدهید، میتوانید از روش زیر استفاده کنید.
جابجایی خودکار نسخههای Node.js در ترمینال zsh بر اساس فایل .nvmrc
پس از اضافه کردن کد زیر به $HOME/.zshrc خود، nvm use به طور خودکار هر زمان که وارد دایرکتوری حاوی فایل .nvmrc میشوید فراخوانی میشود. رشته در فایل .nvmrc به nvm میگوید که از کدام نسخه Node.js استفاده کند.
bash
# باز کردن دایرکتوری home و ویرایش فایل .zshrc
$ cd
$ vi .zshrcاین کدی است که باید به .zshrc نوشته شود:
bash
# این بخش کد را به فایل .zshrc کپی کنید
# این را پس از اولیهسازی nvm قرار دهید!
autoload -U add-zsh-hook
load-nvmrc() {
local nvmrc_path="$(nvm_find_nvmrc)"
if [ -n "$nvmrc_path" ]; then
local nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")")
if [ "$nvmrc_node_version" = "N/A" ]; then
nvm install
elif [ "$nvmrc_node_version" != "$(nvm version)" ]; then
nvm use
fi
elif [ -n "$(PWD=$OLDPWD nvm_find_nvmrc)" ] && [ "$(nvm version)" != "$(nvm version default)" ]; then
echo "Reverting to nvm default version"
nvm use default
fi
}
add-zsh-hook chpwd load-nvmrc
load-nvmrcپس از ویرایش فایل .zshrc، source .zshrc را اجرا کنید تا دستور مؤثر شود:
bash
$ source ~/.zshrcدر پروژههای با فایل .nvmrc، هنگامی که ترمینال یکپارچه را در vscode باز میکنید، متوجه میشوید که nvm use به طور خودکار اجرا میشود، با خروجی مربوطه در خط فرمان.
