Skip to content

Corepack

أُضيف في: v16.9.0، v14.19.0

[مستقر: 1 - تجريبي]

مستقر: 1 الاستقرار: 1 - تجريبي

Corepack هي أداة تجريبية للمساعدة في إدارة إصدارات مديري الحزم الخاصين بك. وهي تعرض وكلاء ثنائيين لكل مدير حزم مدعوم والذي، عند استدعائه، سيحدد مدير الحزم الذي تم تكوينه للمشروع الحالي، ويقوم بتنزيله إذا لزم الأمر، ثم يقوم بتشغيله أخيرًا.

على الرغم من أن Corepack يتم توزيعه مع عمليات التثبيت الافتراضية لـ Node.js، إلا أن مديري الحزم الذين تديرهم Corepack ليسوا جزءًا من توزيع Node.js و:

  • عند الاستخدام الأول، يقوم Corepack بتنزيل أحدث إصدار من الشبكة.
  • أي تحديثات مطلوبة (تتعلق بالثغرات الأمنية أو غير ذلك) تقع خارج نطاق مشروع Node.js. إذا لزم الأمر، يجب على المستخدمين النهائيين معرفة كيفية التحديث بمفردهم.

تُبسط هذه الميزة سير العمل الأساسي التالي:

  • تسهل إعداد المساهمين الجدد، حيث لن يضطروا بعد الآن إلى اتباع عمليات تثبيت خاصة بالنظام لمجرد الحصول على مدير الحزم الذي تريده.
  • يسمح لك بالتأكد من أن كل فرد في فريقك سيستخدم بالضبط إصدار مدير الحزم الذي تنوي استخدامه، دون الحاجة إلى مزامنته يدويًا في كل مرة تحتاج فيها إلى إجراء تحديث.

سير العمل

تمكين الميزة

نظرًا لحالتها التجريبية، تحتاج Corepack حاليًا إلى تمكينها بشكل صريح ليكون لها أي تأثير. للقيام بذلك، قم بتشغيل corepack enable، والذي سيقوم بإعداد الروابط الرمزية في بيئتك بجوار الثنائي node (وسيستبدل الروابط الرمزية الموجودة إذا لزم الأمر).

من هذه النقطة فصاعدًا، سيعمل أي استدعاء للثنائيات المدعومة دون مزيد من الإعداد. إذا واجهت مشكلة، فقم بتشغيل corepack disable لإزالة الوكلاء من نظامك (وفكر في فتح مشكلة على مستودع Corepack لإعلامنا).

تهيئة الحزمة

ستجد وكلاء Corepack أقرب ملف package.json في التسلسل الهرمي للدليل الحالي لاستخراج الخاصية "packageManager" منه.

إذا كانت القيمة تتوافق مع مدير حزم مدعوم، فستتأكد Corepack من أن جميع المكالمات إلى الثنائيات ذات الصلة يتم تشغيلها مقابل الإصدار المطلوب، وتنزيله عند الطلب إذا لزم الأمر، والإجهاض إذا تعذر استرداده بنجاح.

يمكنك استخدام corepack use لمطالبة Corepack بتحديث ملف package.json المحلي لاستخدام مدير الحزم الذي تختاره:

bash
corepack use  # يعيّن أحدث إصدار 7.x في ملف package.json
corepack use yarn@* # يعيّن أحدث إصدار في ملف package.json

ترقية الإصدارات العامة

عند التشغيل خارج مشروع موجود (على سبيل المثال عند تشغيل yarn init)، ستستخدم Corepack بشكل افتراضي إصدارات محددة مسبقًا تتوافق تقريبًا مع أحدث الإصدارات المستقرة من كل أداة. يمكن تجاوز هذه الإصدارات عن طريق تشغيل الأمر corepack install مع إصدار مدير الحزم الذي ترغب في تعيينه:

bash
corepack install --global

بدلاً من ذلك، يمكن استخدام علامة أو نطاق:

bash
corepack install --global pnpm@*
corepack install --global yarn@stable

سير العمل دون اتصال بالإنترنت

العديد من بيئات الإنتاج ليس لديها وصول إلى الشبكة. نظرًا لأن Corepack عادةً ما تقوم بتنزيل إصدارات مدير الحزم مباشرةً من سجلاتهم، فقد يتعارض ذلك مع هذه البيئات. لتجنب حدوث ذلك، قم باستدعاء الأمر corepack pack أثناء استمرار اتصالك بالشبكة (عادةً في نفس الوقت الذي تقوم فيه بإعداد صورة النشر الخاصة بك). سيضمن ذلك توفر مديري الحزم المطلوبين حتى بدون الوصول إلى الشبكة.

يحتوي الأمر pack على علامات مختلفة. راجع وثائق Corepack التفصيلية لمزيد من المعلومات.

مدراء الحزم المدعومون

يتم توفير الثنائيات التالية من خلال Corepack:

مدير الحزمأسماء الثنائيات
Yarnyarn , yarnpkg
pnpmpnpm , pnpx

أسئلة شائعة

كيف يتفاعل Corepack مع npm؟

بينما يمكن لـ Corepack دعم npm مثل أي مدير حزم آخر، إلا أن أدوات التعبئة الخاصة به غير مفعلة افتراضيًا. وهذا له بعض العواقب:

  • من الممكن دائمًا تشغيل أمر npm داخل مشروع مهيأ للاستخدام مع مدير حزم آخر، حيث لا يمكن لـ Corepack اعتراضه.
  • في حين أن npm هو خيار صالح في خاصية "packageManager"، فإن عدم وجود أداة تعبئة سيؤدي إلى استخدام npm العام.

تشغيل npm install -g yarn لا يعمل

يمنع npm تجاوز ثنائيات Corepack عن طريق الخطأ عند إجراء تثبيت عام. لتجنب هذه المشكلة، ضع في اعتبارك أحد الخيارات التالية:

  • لا تقم بتشغيل هذا الأمر؛ ستوفر Corepack ثنائيات مدير الحزم على أي حال وستضمن أن الإصدارات المطلوبة متاحة دائمًا، لذلك ليست هناك حاجة لتثبيت مديري الحزم بشكل صريح.
  • أضف العلامة --force إلى npm install ؛ سيخبر هذا npm أنه لا بأس في تجاوز الثنائيات، ولكنك ستمحو ثنائيات Corepack في هذه العملية. (قم بتشغيل corepack enable لإضافتها مرة أخرى.)