لمعرفة إصدار Node.js الذي يتوقعه مشروع ما على جهاز Mac الخاص بك، افحص ملفات الإصدار الخاصة به وإعداداته قبل التحقق من الإصدار النشط في Terminal. ابدأ بـ .nvmrc، ثم تحقق من package.json للبحث عن إعدادات volta وengines. هذه الدلائل لها معانٍ مختلفة: بعضها يثبت إصدارًا لأداة معينة، بينما يصف البعض الآخر نطاق التوافق.
1. افتح مجلد المشروع في Terminal
في Finder، حدد موقع مجلد المشروع. انقر عليه مع الضغط على مفتاح Control واختر New Terminal at Folder إذا كان هذا الخيار متاحًا؛ وإلا فافتح Terminal وانتقل إلى المجلد باستخدام cd. يمكنك سحب المجلد من Finder وإسقاطه في نافذة Terminal بعد كتابة cd ، ثم اضغط على Return. يجنبك هذا كتابة مسار يحتوي على مسافات بشكل غير صحيح.
قم بتشغيل أوامر القراءة فقط هذه من دليل المشروع:
ls -a
grep -nE '"(engines|volta)"|"node"' package.json .nvmrc
يتضمن الأمر ls -a الملفات المخفية مثل .nvmrc. يطبع grep الأسطر المطابقة من الملفات الموجودة؛ وإذا كان أحد الملفات غير موجود، فقد يطبع خطأً يخص ذلك الملف، وهذا لا يعني أن المشروع به خلل. لفحص ملف معين بشكل أكثر شمولاً، استخدم sed -n '1,160p' package.json أو sed -n '1,20p' .nvmrc عندما يكون الملف موجودًا. تعرض هذه الأوامر نصوصًا فقط؛ ولا تُجري أي تغييرات على المشروع.
2. اقرأ .nvmrc كتعليمة لمدير الإصدارات
إذا وجدت .nvmrc، فاقرأ محتوياته. تشير قيمة مثل 20.16.0 إلى أن المشروع يحدد إصدار Node.js هذا لمستخدمي nvm. يقبل nvm أيضًا محددات الإصدارات مثل 20 أو lts/*، لذلك قد لا يحدد الملف إصدار تصحيح (patch release) ثابتًا بعينه. تذكر وثائق nvm أن أوامره يمكنها العثور على .nvmrc في دليل المشروع أو في دليل أصلي (parent directory)، وأن الأمر nvm use بدون تحديد إصدار يستخدم الملف عندما يكون متاحًا. ملف README الخاص بـ nvm: .nvmrc
على نظام macOS، تحقق مما إذا كان nvm متاحًا وما الإصدار الذي يحدده في هذا الدليل:
command -v nvm
nvm use
node --version
يجب أن يطبع command -v nvm الكلمة nvm عند تحميل nvm في واجهة shell الحالية. إذا لم يكن الأمر متاحًا، فلا تفترض أن .nvmrc غير صالح؛ إذ لا يزال بإمكان الملف توثيق اختيار المشروع حتى لو لم يكن nvm مثبتًا أو محملًا لديك. يحدد nvm use الإصدار المذكور في الملف إذا كان مثبتًا؛ وإذا كان مفقودًا، فقد يطلب منك nvm تثبيته. لا تقم بإجراء التثبيت إلا إذا كنت تنوي إضافة إصدار Node هذا إلى جهاز Mac الخاص بك.
3. تحقق من package.json للبحث عن Volta ونطاقات التوافق
ابحث عن كائن volta في المستوى الأعلى. على سبيل المثال:
"volta": {
"node": "20.16.0"
}
هذا تثبيت لإصدار Node للمشاريع المُدارة بواسطة Volta. توضح وثائق Volta أن الأمر volta pin يخزن إصدارات الأدوات المحددة في package.json، وأن Volta يوجه أوامر Node إلى إصدار المشروع. Understanding Volta إذا كنت تستخدم Volta، فإن تشغيل node --version من دليل المشروع يمكن أن يوضح الإصدار الذي تشغله سلسلة الأدوات (toolchain)؛ وبدون Volta، يظل الكائن مجرد بيانات وصفية للمشروع، وليس أمرًا لـ macOS Terminal.
افحص أيضًا خاصية engines، والتي تُكتب عادةً على هذا النحو:
"engines": {
"node": ">=18 <23"
}
يوفر هذا نطاق توافق، وليس بالضرورة الإصدار الذي قام المطورون بتثبيته. تصف وثائق npm الخاصية engines.node بأنها تحدد إصدارات Node التي يعمل معها الحزمة؛ وما لم يتم تمكين engine-strict، فإن npm يتعامل معها كإرشاد فقط وقد يكتفي بالتحذير أثناء تثبيت التبعيات. وثائق package.json الخاصة بـ npm النطاق الواسع يعني أن المشروع يدعي التوافق عبر جميع الإصدارات المسموح بها؛ ولا يحدد إصدارًا متوقعًا بدقة.
4. قارن بين الملفات وحل الدلائل المتضاربة
تعامل مع ملف .nvmrc محدد بدقة أو تثبيت Volta كأقوى مؤشر على إصدار معين تُديره أداة معينة. وتعامل مع engines.node كقيد للتوافق. إذا تعارضت الملفات — على سبيل المثال، يحدد .nvmrc الإصدار 18 بينما يتطلب engines.node الإصدار >=20 — فلا تختر أحدهما ضمنيًا وبصمت. قد تكون الملفات قديمة، أو تخدم أدوات مختلفة، أو تعكس تغييرًا حديثًا. راجع ملف README الخاص بالمشروع وتعليمات الإعداد، ثم اسأل المشرفين أو الفريق عن الملف الذي يتوقعون من المساهمين اتباعه.
يمكن للمشاريع أيضًا تحديد الإصدارات في ملفات تستخدمها مديرات إصدارات أخرى أو في إعدادات التكامل المستمر (CI). إذا لم يقدم .nvmrc وpackage.json إجابة مفيدة، فابحث في ملفات المشروع المرئية باستخدام ls -a وافحص وثائق الإعداد وتكوين سير العمل (workflow). قد يُظهر ملف CI الإصدار المستخدم لعمليات البناء التلقائية، ولكن ذلك قد يختلف عن إعداد المطور المحلي؛ تأكد من السياق قبل اعتباره متطلبًا للمشروع.
5. تحقق من إصدار Node الذي يستخدمه جهاز Mac الخاص بك فعليًا
بعد تحديد تعليمات المشروع، قارنها ببيئة التشغيل النشطة:
node --version
command -v node
يعرض الأمر الأول إصدار Node النشط؛ بينما يوضح الثاني مسار الملف القابل للتنفيذ المحدد عبر PATH الخاص بـ shell لديك. يصف هذان الأمران بيئة Terminal الحالية الخاصة بك، ولا يعبران بمفردهما عن متطلبات المشروع. مع nvm، قم بتشغيل nvm use من دليل المشروع قبل التحقق. ومع Volta، قم بتشغيل عمليات الفحص من ذلك الدليل حتى يمكن تطبيق إعدادات المشروع الخاصة به. إذا كان الإصدار المُبلغ عنه لا يزال يختلف عن الإصدار المثبت، فقد لا يكون المدير المعني مثبتًا، أو محملًا، أو متحكمًا في الملف القابل للتنفيذ node في واجهة shell هذه.
تأتي الإجابة العملية من قراءة كلا الجانبين: يخبرك إعلان الإصدار في المستودع بما يطلبه، بينما يخبرك node --version بما يقوم جهاز Mac الخاص بك بتشغيله حاليًا. إذا لم يتطابق هذان الأمران، فقم بضبط تعليمات المدير أو المشروع قبل الاعتماد على النتائج المحلية.
المصادر
nvm/README.md — nvm-sh
Understanding Volta — Volta
package.json | npm Docs — npm