Skip to content

جابجایی نسخه‌های Node با NVM

استفاده پایه

NVM دستورات ساده اما قدرتمندی برای جابجایی بین نسخه‌های مختلف Node.js ارائه می‌دهد. اساسی‌ترین دستور nvm use است که به شما امکان می‌دهد یک نسخه نصب شده Node.js را فعال کنید.

مشاهده نسخه‌های موجود Node

قبل از جابجایی، می‌توانید از دستور nvm ls برای مشاهده نسخه‌های نصب شده Node.js استفاده کنید.

bash
nvm ls

nvm ls

روش‌های مختلف جابجایی نسخه‌ها

استفاده از شماره نسخه کامل

می‌توانید شماره نسخه کامل را مشخص کنید:

مثلاً، برای استفاده از Node.js v24.0.2:

bash
$ nvm use 24.0.2
Now using node v24.0.2 (64-bit)

nvm ls

استفاده از شماره نسخه اصلی

فقط شماره نسخه اصلی را مشخص کنید، و NVM از آخرین نسخه نصب شده آن نسخه اصلی استفاده می‌کند:

bash
$ nvm use 14
Using node v14.17.6 (npm v6.14.15)

استفاده از نام‌های مستعار

NVM چندین نام مستعار خاص داخلی دارد:

bash
# استفاده از آخرین نسخه پایدار
$ nvm use node
Now using node v16.14.0 (npm v8.3.1)

# استفاده از آخرین نسخه LTS
$ nvm use lts/*
Now using node v16.13.2 (npm v8.1.2)

# استفاده از نسخه خاص LTS
$ nvm use lts/gallium
Now using node v16.13.2 (npm v8.1.2)

مشخص کردن معماری (فقط Windows)

در سیستم‌های Windows، می‌توانید مشخص کنید که از نسخه 32 بیتی یا 64 بیتی استفاده شود:

bash
$ nvm use 14.17.0 32
$ nvm use 16.14.0 64

جابجایی خودکار نسخه با فایل‌های .nvmrc

یک فایل به نام .nvmrc در دایرکتوری ریشه پروژه خود با شماره نسخه Node.js به عنوان محتوای آن ایجاد کنید. سپس، به سادگی دستور nvm use را (بدون آرگومان) اجرا کنید، و NVM نسخه را از فایل .nvmrc می‌خواند و به طور خودکار به آن نسخه تغییر می‌دهد.

  1. یک فایل .nvmrc ایجاد کنید:
bash
$ echo "16.14.0" > .nvmrc
  1. در دایرکتوری پروژه اجرا کنید:
bash
$ nvm use
Found '/path/to/project/.nvmrc' with version <16.14.0>
Now using node v16.14.0 (npm v8.3.1)

مثال‌هایی از محتوای فایل .nvmrc:

  • 16.14.0 - نسخه دقیق
  • 16 - آخرین نسخه نسخه اصلی
  • lts/* - آخرین نسخه LTS
  • node - آخرین نسخه Node.js

تنظیم نسخه پیش‌فرض Node.js

می‌توانید یک نسخه پیش‌فرض Node.js تنظیم کنید که هر بار که یک ترمینال جدید باز می‌کنید به طور خودکار استفاده شود:

bash
$ nvm alias default 16.14.0
default -> 16.14.0 (-> v16.14.0)

به این ترتیب، حتی اگر دستور nvm use را اجرا نکنید، نسخه مشخص شده به طور پیش‌فرض استفاده می‌شود.

ملاحظات هنگام جابجایی نسخه‌ها

مدیریت بسته سراسری

هنگام جابجایی نسخه‌های Node.js، بسته‌های نصب شده سراسری به طور خودکار منتقل نمی‌شوند. هر نسخه Node.js مجموعه جداگانه‌ای از بسته‌های سراسری دارد.

اگر می‌خواهید تمام بسته‌های سراسری را از یک نسخه به نسخه دیگر کپی کنید، می‌توانید از این استفاده کنید:

bash
# کپی بسته‌های سراسری از v14.17.0 به v16.14.0
$ nvm install 16.14.0 --reinstall-packages-from=14.17.0

استفاده موقت از نسخه دیگر

اگر فقط می‌خواهید یک دستور را با نسخه متفاوت Node.js اجرا کنید بدون تغییر نسخه جلسه فعلی، می‌توانید از nvm run استفاده کنید:

bash
$ nvm run 14.17.0 app.js

بررسی نسخه فعلی

برای بررسی اینکه کدام نسخه Node.js در حال حاضر استفاده می‌شود:

bash
$ nvm current
v16.14.0

مشکلات و راه‌حل‌های رایج

از دست رفتن متغیرهای محیطی پس از جابجایی

مشکل: پس از جابجایی نسخه‌ها، متغیرهای محیطی قبلاً تنظیم شده مانند NODE_PATH ممکن است از دست بروند. راه‌حل: تنظیمات متغیر محیطی را به فایل .bashrc یا .zshrc خود اضافه کنید.

جابجایی خودکار نسخه

اگر می‌خواهید هنگام ورود به دایرکتوری پروژه به طور خودکار به نسخه Node.js مشخص شده در فایل .nvmrc تغییر دهید، می‌توانید موارد زیر را به .bashrc یا .zshrc خود اضافه کنید:

برای Bash:

bash
cdnvm() {
    command cd "$@" || return $?
    nvm_path="$(nvm_find_up .nvmrc | tr -d '\n')"
    
    if [ -e "$nvm_path/.nvmrc" ]; then
        declare default_version;
        default_version="$(nvm version default)"
        
        declare nvmrc_version;
        nvmrc_version="$(nvm version "$(cat "$nvm_path/.nvmrc")")"
        
        if [ "$nvmrc_version" = "N/A" ]; then
            echo "Warning: $(cat "$nvm_path/.nvmrc") version not installed"
        elif [ "$nvmrc_version" != "$default_version" ]; then
            nvm use > /dev/null
        fi
    fi
}
alias cd='cdnvm'

برای Zsh:

bash
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

بهترین روش‌ها

  1. ایجاد یک فایل .nvmrc برای هر پروژه: اطمینان می‌دهد که اعضای تیم از همان نسخه Node.js استفاده می‌کنند
  2. به‌روزرسانی منظم به نسخه‌های LTS: نسخه‌های LTS پایدارتر و مناسب برای محیط‌های تولید هستند
  3. استفاده از نسخه‌گذاری معنایی: نسخه‌های دقیق را در فایل‌های .nvmrc مشخص کنید تا از مشکلات سازگاری جلوگیری کنید
  4. تنظیم نسخه پیش‌فرض مناسب: یک نسخه پیش‌فرض Node.js برای توسعه روزمره تنظیم کنید

پارامترهای دستور nvm use

پارامترتوضیحات
<version>نسخه Node.js برای استفاده را مشخص می‌کند
nodeاز آخرین نسخه Node.js استفاده می‌کند
lts/*از آخرین نسخه پشتیبانی بلندمدت استفاده می‌کند
lts/<name>از یک نسخه خاص پشتیبانی بلندمدت استفاده می‌کند
<version> <architecture>(فقط Windows) مشخص می‌کند که از نسخه 32 یا 64 بیتی استفاده شود

با این روش‌ها، می‌توانید به راحتی بین نسخه‌های مختلف Node.js جابجا شوید تا نیازهای توسعه پروژه‌های مختلف را برآورده کنید.

NVM - مدیر نسخه Node برای Windows، Linux و macOS