Skip to content

إدارة إصدارات Node.js

يوفر fnm ميزات قوية لإدارة الإصدارات، مما يتيح لك التبديل بسهولة بين إصدارات Node.js المتعددة.

العمليات الأساسية

عرض الإصدارات المثبتة

bash
fnm list

مثال المخرجات:

* v20.10.0 default
  v18.19.0
  v16.20.2
  • * يشير إلى الإصدار المستخدم حالياً
  • default يشير إلى الإصدار الافتراضي

عرض الإصدار الحالي

bash
fnm current

تبديل الإصدار

bash
# Switch to specific version
fnm use 20

# Switch to specific exact version
fnm use 20.10.0

# If version is not installed, auto install then switch
fnm use 18 --install-if-missing

الإصدار الافتراضي

تعيين الإصدار الافتراضي

bash
fnm default 20

الإصدار الافتراضي هو:

  • الإصدار المستخدم عند بدء جلسة طرفية جديدة
  • الإصدار المستخدم عند عدم وجود ملف إصدار

عرض الإصدار الافتراضي

bash
fnm default

الأسماء المستعارة للإصدارات

تتيح لك الأسماء المستعارة تعيين أسماء سهلة الحفظ للإصدارات.

إنشاء اسم مستعار

bash
# Set alias for version
fnm alias 20 default
fnm alias 18 legacy
fnm alias 16 old

استخدام الاسم المستعار

bash
# Switch version via alias
fnm use default
fnm use legacy

حذف الاسم المستعار

bash
fnm unalias legacy

التبديل التلقائي للإصدار

يمكن لـ fnm التبديل التلقائي لإصدارات Node.js بناءً على دليل المشروع.

تمكين التبديل التلقائي

أضف --use-on-cd إلى تكوين الصدفة:

bash
eval "$(fnm env --use-on-cd)"

إنشاء ملف إصدار

أنشئ ملف .node-version أو .nvmrc في جذر المشروع:

bash
# Using .node-version (recommended)
echo "20" > .node-version

# Or using .nvmrc (compatible with nvm)
echo "v18.17.0" > .nvmrc

تنسيق ملف الإصدار

يدعم .node-version التنسيقات التالية:

20           # Major version, use latest 20.x.x
20.10        # Minor version, use latest 20.10.x
20.10.0      # Exact version
lts/iron     # LTS version name

استراتيجية تحليل ملف الإصدار

يدعم fnm استراتيجيتين لتحليل ملف الإصدار:

bash
# local (default) - Only search in current directory
fnm env --version-file-strategy=local

# recursive - Recursively search parent directories
fnm env --version-file-strategy=recursive

دعم package.json engines

يمكن لـ fnm قراءة حقل engines.node من package.json:

json
{
  "engines": {
    "node": ">=18.0.0"
  }
}

ممكّن افتراضياً، يمكن تعطيله عبر متغير البيئة:

bash
export FNM_RESOLVE_ENGINES=false

أفضل ممارسات إدارة الإصدارات

1. قفل الإصدار على مستوى المشروع

أنشئ ملف .node-version في كل مشروع:

bash
cd my-project
echo "20" > .node-version
fnm install
fnm use

2. التعاون الجماعي

أضف .node-version إلى Git:

bash
git add .node-version
git commit -m "chore: add .node-version"

3. تكوين CI/CD

استخدم fnm في بيئات CI/CD:

yaml
# GitHub Actions
- name: Install fnm
  run: curl -fsSL https://fnm.vercel.app/install | bash

- name: Install Node.js
  run: fnm install && fnm use

4. التطوير متعدد الإصدارات

bash
# Install multiple versions
fnm install 20
fnm install 18
fnm install 16

# Set aliases for easy switching
fnm alias 20 current
fnm alias 18 legacy
fnm alias 16 old

# Use different versions in different projects
cd project-new && fnm use current
cd project-old && fnm use legacy

إلغاء تثبيت الإصدارات

bash
# Uninstall specific version
fnm uninstall 16.20.2

# Uninstall via alias (will delete version and all related aliases)
fnm uninstall old

المشكلات الشائعة

أمر node لا يتم تحديثه بعد تبديل الإصدار

تأكد من أن تكوين الصدفة صحيح:

bash
# Check node path
which node

# Should point to fnm directory
# ~/.fnm/node-versions/.../bin/node

التبديل التلقائي لا يعمل

  1. تأكد من إضافة --use-on-cd إلى تكوين الصدفة
  2. تأكد من وجود ملف الإصدار
  3. أعد تحميل تكوين الصدفة

أولوية ملف الإصدار

يبحث fnm عن الإصدارات بالترتيب التالي:

  1. الإصدار المحدد في سطر الأوامر
  2. ملف .node-version
  3. ملف .nvmrc
  4. package.json engines.node
  5. الإصدار الافتراضي

روابط ذات صلة