#3923·nvm

بررسی پروژه

Author: novaonlineshopCreated Sep 12, 2026Updated Sep 12, 2026

Operating system and version:

nvm debug output:

nvm ls output:

How did you install nvm?

What steps did you perform?

What happened?

What did you expect to happen?

Is there anything in any of your profile files that modifies the PATH?

If you are having installation issues, or getting "N/A", what does curl -I --compressed -v https://nodejs.org/dist/ print out?

I'll analyze the nvm repository thoroughly and help you prepare for contributing. Let me get a comprehensive understanding of the project.Now let me perform a comprehensive review of the nvm repository:Now let me get more details about the repository structure and files:Now let me check the test directory structure and look at some key documentation files:# بررسی جامع مخزن nvm-sh/nvm و راهنمای مشارکت

نمای کلی مخزن

nvm (Node Version Manager) یک اسکریپت bash منطبق با POSIX است که به شما اجازه می‌دهد چندین نسخه از Node.js را به سرعت نصب و استفاده کنید. این پروژه بیش از 95,000 ستاره دارد و توسط جامعه‌ای وسیع پشتیبانی می‌شود.

مشخصات پروژه

  • زبان اصلی: Shell (Bash)
  • فریم‌ورک: Bash script POSIX-compliant
  • کتابخانه‌های مهم: urchin (test framework), semver, doctoc
  • مجوز: MIT
  • صاحب: Organization nvm-sh
  • شاخه پیش‌فرض: master
  • وضعیت: فعال (آخرین به‌روزرسانی: 2 ساعت پیش)

️ ساختار پروژه

nvm-sh/nvm/
├── nvm.sh                    # فایل اصلی nvm (172 KB)
├── install.sh                # اسکریپت نصب و به‌روزرسانی
├── nvm-exec                  # اجرای دستورات در subshell
├── bash_completion           # تکمیل خودکار bash
├── package.json              # وابستگی‌های npm و npm scripts
├── Makefile                  # خودکارسازی تست‌ها و انتشار
├── Dockerfile                # تنظیم Docker برای محیط توسعه
├── README.md                 # مستندات جامع (57 KB)
├── CONTRIBUTING.md           # راهنمای مشارکت
├── CODE_OF_CONDUCT.md        # کد رفتاری
├── test/                     # مجموعه تست‌های گسترده
│   ├── fast/                 # تست‌های سریع
│   ├── slow/                 # تست‌های کند
│   ├── install_script/       # تست‌های اسکریپت نصب
│   ├── installation_node/    # تست نصب Node
│   ├── installation_iojs/    # تست نصب io.js
│   └── sourcing/             # تست‌های sourcing
├── .github/                  # GitHub Actions workflows
├── ROADMAP.md                # نقشه راه پروژه
├── GOVERNANCE.md             # حکمرانی پروژه
└── PROJECT_CHARTER.md        # منشور پروژه

نحوه عملکرد:

nvm به عنوان یک تابع shell بارگیری می‌شود (نه باینری اجرایی) و PATH را مدیریت می‌کند تا نسخه صحیح Node.js فعال شود. کاربران می‌توانند بین نسخه‌های مختلف تغییر دهند، نسخه‌های جدید نصب کنند، یا از فایل .nvmrc استفاده کنند.


⚙️ راه‌اندازی و تست

نصب وابستگی‌ها:

npm install

اجرای تست‌ها:

# تمام تست‌ها
npm test

# تست‌های سریع فقط
npm run test/fast

# تست‌های کند
npm run test/slow

# تست اسکریپت نصب
npm run test/install_script

# تست نصب واقعی Node.js و io.js
npm run test/installation

بررسی کیفیت کد:

# بررسی eclint (editor config)
npm run eclint

# بررسی لینک‌های Markdown
npm run markdown-link-check

# بررسی فایل Dockerfile
npm run dockerfile_lint

# به‌روزرسانی Table of Contents
npm run doctoc

انتشار نسخه جدید:

make TAG=patch release    # یا minor، major، و یا شماره دقیق

نکات مهم برای مشارکت‌کنندگان

✅ قبل از ارسال Pull Request:

  1. شامل تست‌ها باشد

    • تست‌های جامع سریع‌تر merge می‌شوند
    • استفاده از urchin test framework
  2. تست در چند shell

    bash, sh/dash, ksh, zsh
    
    • هر تغییر باید در حداقل این shell‌ها کار کند
  3. استانداردهای کد:

    • فاصله‌گذاری: 2 space
    • trailing newlines در تمام فایل‌ها
    • بدون merge commits (rebase)
  4. پیام commit:

    [Tag]: توضیح مختصر (≤72 حرف)
    
    توضیح طولانی‌تر در صورت لزوم
    
    Fixes #1234
    

مراحل ارسال Pull Request:

# 1. شاخه جدید بسازید
git checkout -b issue1234

# 2. تغییرات را commit کنید
git commit -a

# 3. بر روی آخرین نسخه upstream rebase کنید
git fetch upstream
git rebase upstream/master

# 4. تست‌ها را اجرا کنید
npm test

# 5. push کنید
git push origin issue1234

# 6. Pull Request ارسال کنید

راه‌های مشارکت

1. حل مسائل موجود

  • به دنبال label "help wanted" باشید
  • 386 issue باز وجود دارد

2. بهبود مستندات

  • اضافه کردن اطلاعات گمشده
  • بهبود سازگاری و انسجام

3. اصلاح باگ‌ها

  • تست اضافی برای مسائل تکراری
  • شامل قدم‌های تولید مثل (reproduction steps)

4. افزودن ویژگی‌های جدید

  • همراه با تست‌های جامع
  • توافق با ستاره‌نگاه‌های پروژه

کمک گرفتن

  • مسائل: استفاده از GitHub Issues
  • سوالات: تماس با @LJHarb
  • کد رفتاری: مطالعه CODE_OF_CONDUCT.md

Developer's Certificate of Origin

با مشارکت، شما تصدیق می‌کنید که:

  • کد متعلق به شما است یا مجوز دارید آن را ارسال کنید
  • یا بر اساس کدی با مجوز مناسب است
  • یا مستقیماً از شخص دیگری دریافت کرده‌اید

حالا شما آماده‌اید!

می‌توانید به یکی از 386 issue باز کمک کنید، یا اگر ایده‌ای دارید، یک issue جدید بسازید و درباره آن بحث کنید. جامعه nvm بسیار دوستانه و حمایت‌کننده است!