Corepack هو برنامج نصي Node.js لا يعتمد على وقت التشغيل ويعمل كجسر بين مشاريع Node.js ومديري الحزم المقصود استخدامها معهم أثناء التطوير. من الناحية العملية، يتيح لك Corepack استخدام Yarn وnpm وpnpm دون الحاجة إلى تثبيتها .
يتم توزيع Corepack بشكل افتراضي مع كافة إصدارات Node.js الحديثة. قم بتشغيل corepack enable
لتثبيت ثنائيات Yarn وpnpm المطلوبة على المسار الخاص بك.
قم أولاً بإلغاء تثبيت ثنائيات Yarn وpnpm العالمية (فقط اترك npm). بشكل عام، يمكنك القيام بذلك عن طريق تشغيل الأمر التالي:
npm uninstall -g الغزل pnpm# من المفترض أن يكون ذلك كافيًا، ولكن إذا قمت بتثبيت Yarn دون المرور عبر npm، فقد يكون الأمر أكثر صعوبة - على سبيل المثال، قد تحتاج إلى تشغيل `brew uninstall thread` أيضًا.
ثم قم بتثبيت Corepack:
تثبيت npm -g corepack
نحن نعترف بالسخرية والتكاليف الزائدة لاستخدام npm لتثبيت Corepack، وهو على الأقل جزء من السبب وراء كون الخيار المفضل هو استخدام إصدار Corepack الذي يتم توزيعه مع Node.js نفسها.
انظر CONTRIBUTING.md
.
ما عليك سوى استخدام مديري الحزم كما تفعل عادةً. قم بتشغيل yarn install
في مشاريع الغزل، pnpm install
في مشاريع pnpm، و npm
في مشاريع npm. سوف تلتقط Corepack هذه المكالمات، اعتمادًا على الموقف:
إذا تم تكوين المشروع المحلي لمدير الحزم الذي تستخدمه ، فسيقوم Corepack بتنزيل أحدث إصدار متوافق وتخزينه مؤقتًا.
إذا تم تكوين المشروع المحلي لمدير حزم مختلف ، فسوف يطلب منك Corepack تشغيل الأمر مرة أخرى باستخدام مدير الحزم المناسب - وبالتالي تجنب تلف عناصر التثبيت الخاصة بك.
إذا لم يتم تكوين المشروع المحلي لأي مدير حزم ، فسوف يفترض Corepack أنك تعرف ما تفعله، وسوف يستخدم أي إصدار مدير حزم تم تثبيته على أنه "إصدار جيد معروف". تحقق من القسم ذي الصلة لمزيد من التفاصيل.
قم بتعيين مدير الحزمة الخاصة بك باستخدام حقل packageManager
في package.json
:
{ "packageManager": "[email protected]+sha224.953c8233f7a92884eee2de69a1b92d1f2ec1655e66d08071ba9a02fa"}
هنا، yarn
هو اسم مدير الحزم، المحدد في الإصدار 3.2.3
، بالإضافة إلى تجزئة SHA-224 لهذا الإصدار للتحقق من صحته. مطلوب packageManager@xyz
. يعد التجزئة اختياريًا ولكن يوصى به بشدة كممارسة أمنية. القيم المسموح بها لمدير الحزم هي yarn
و npm
و pnpm
.
يمكنك أيضًا توفير عنوان URL لملف .js
(والذي سيتم تفسيره على أنه وحدة CommonJS) أو ملف .tgz
(والذي سيتم تفسيره على أنه حزمة، وسيتم استخدام حقل "bin"
الخاص package.json
لـ تحديد الملف الذي سيتم استخدامه في الأرشيف).
{ "packageManager": "yarn@https://registry.npmjs.org/@yarnpkg/cli-dist/-/cli-dist-3.2.3.tgz#sha224.16a0797d1710d1fb7ec40ab5c3801b68370a612a9b66ba117ad9924b"}
عند تشغيل Corepack ضمن المشاريع التي لا تتضمن مدير حزم مدعومًا، فسيتم تعيينه افتراضيًا على مجموعة من الإصدارات الجيدة المعروفة.
إذا لم يكن هناك إصدار جيد معروف لمدير الحزم المطلوب، يبحث Corepack عن سجل npm للحصول على أحدث إصدار متاح ويخزنه مؤقتًا لاستخدامه في المستقبل.
يمكن تحديث الإصدارات الجيدة المعروفة على مستوى النظام باستخدام corepack install -g
. عندما يقوم Corepack بتنزيل إصدار جديد من مدير حزم معين على نفس السطر الرئيسي مثل الإصدار الجيد المعروف، فإنه يقوم بتحديثه تلقائيًا بشكل افتراضي.
أوامر الأداة المساعدة مفصلة في القسم التالي.
يمكنك إما استخدام الشبكة أثناء إنشاء صورة الحاوية الخاصة بك، وفي هذه الحالة ستقوم ببساطة بتشغيل corepack pack
للتأكد من أن صورتك تتضمن الإصدار الأخير المعروف لمدير الحزم المحدد.
أو أنك تنشر مشروعك على نظام لا تتوفر فيه الشبكة، وفي هذه الحالة ستقوم بشكل استباقي بإنشاء أرشيف مدير الحزم من جهاز الكمبيوتر المحلي الخاص بك (باستخدام corepack pack -o
) قبل تخزينه في مكان ما حيث ستتمكن حاويتك من الوصول إليه (على سبيل المثال داخل المستودع الخاص بك). بعد ذلك سيكون الأمر مجرد تشغيل corepack install -g --cache-only
لإعداد ذاكرة التخزين المؤقت.
corepack [@] [... args]
يقوم هذا الأمر التعريفي بتشغيل مدير الحزم المحدد في المجلد المحلي. يمكنك استخدامه لفرض التثبيت للتشغيل مع إصدار معين، وهو ما قد يكون مفيدًا عند البحث عن التراجعات.
لاحظ أن هذه الأوامر لا تزال تتحقق مما إذا كان المشروع المحلي قد تم تكوينه لمدير الحزم المحدد (أي أنك لن تكون قادرًا على تشغيل corepack yarn install
على مشروع حيث يشير حقل packageManager
إلى pnpm
).
corepack cache clean
يمسح دليل ذاكرة التخزين المؤقت COREPACK_HOME
المحلي.
corepack cache clear
يمسح دليل ذاكرة التخزين المؤقت COREPACK_HOME
المحلي.
corepack enable [... name]
خيار | وصف |
---|---|
--install-directory | أضف الحشوات إلى الموقع المحدد |
سيكتشف هذا الأمر مكان تثبيت Corepack وسينشئ شرائح بجانبه لكل مدير من مديري الحزم المحددين (أو جميعهم إذا تم استدعاء الأمر بدون معلمات). لاحظ أنه لن يتم تثبيت حشوات npm إلا إذا طلب ذلك صراحةً، حيث يتم توزيع npm حاليًا مع Node.js من خلال وسائل أخرى.
إذا كان نظام الملفات الذي يوجد به الملف الثنائي corepack
للقراءة فقط، فسوف يفشل هذا الأمر. الحل البديل هو إضافة الثنائيات كاسم مستعار في ملف تكوين Shell (على سبيل المثال في ~/.bash_aliases
):
الاسم المستعار للغزل = "غزل corepack" الاسم المستعار للغزلpkg = "corepack الغزلpkg" الاسم المستعار pnpm = "corepack pnpm" الاسم المستعار pnpx = "corepack pnpx" الاسم المستعار npm = "corepack npm" الاسم المستعار npx = "corepack npx"
في Windows PowerShell، يمكنك إضافة وظائف باستخدام المتغير التلقائي $PROFILE
:
echo "وظيفة الغزل { corepack الغزل `$args }" >> $PROFILEecho "function Yarnpkg { corepack Yarnpkg `$args }" >> $PROFILEecho "function pnpm { corepack pnpm `$args }" >> $PROFILEecho "function pnpx { corepack pnpx `$args }" >> $PROFILEecho "function npm { corepack npm `$args }" >> $PROFILEecho "function npx { corepack npx `$args }" >> $PROFILE
corepack disable [... name]
خيار | وصف |
---|---|
--install-directory | قم بإزالة الحشوات إلى الموقع المحدد |
سيكتشف هذا الأمر مكان تثبيت Node.js وسيزيل الحشوات من هناك.
corepack install
قم بتنزيل وتثبيت مدير الحزم الذي تم تكوينه في المشروع المحلي. لا يغير هذا الأمر الإصدار العام المستخدم عند تشغيل مدير الحزم من خارج المشروع (استخدم العلامة `-g,--global` إذا كنت ترغب في القيام بذلك).
corepack install <-g,--global> [... name[@]]
قم بتثبيت مديري الحزم المحددين وتثبيتهم على النظام.
سيتم تكوين مديري الحزم المثبتين على هذا النحو كإعداد افتراضي جديد عند استدعاء الثنائيات الخاصة بهم خارج المشروعات التي تحدد حقل packageManager
.
corepack pack [... name[@]]
خيار | وصف |
---|---|
--json | اطبع مجلد الإخراج بدلاً من السجلات |
-o,--output | المسار حيث يتم إنشاء الأرشيف |
قم بتنزيل مديري الحزم المحددين وقم بتخزينهم داخل كرة tarball مناسبة للاستخدام مع corepack install -g
.
corepack use ]>
عند التشغيل، سيقوم هذا الأمر باسترداد أحدث إصدار مطابق للواصف المقدم، وتعيينه لملف package.json الخاص بالمشروع، وإجراء التثبيت تلقائيًا.
corepack up
قم باسترجاع أحدث إصدار متاح لخط الإصدار الرئيسي الحالي لمدير الحزم المستخدم في المشروع المحلي، وقم بتحديث المشروع لاستخدامه.
على عكس corepack use
لا يأخذ هذا الأمر اسم مدير الحزم ولا نطاق الإصدار، لأنه سيحدد دائمًا أحدث إصدار متاح من نفس السطر الرئيسي. إذا كنت بحاجة إلى الترقية إلى تخصص جديد، فاستخدم corepack use {name}@latest
call (أو ببساطة corepack use {name}
).
يمكن تعيين COREPACK_DEFAULT_TO_LATEST
على 0
لتوجيه Corepack بعدم البحث في السجل البعيد عن أحدث إصدار من مدير الحزم المحدد، وعدم تحديث الإصدار Last Known Good عندما يقوم بتنزيل إصدار جديد من نفس السطر الرئيسي.
يمكن ضبط COREPACK_ENABLE_AUTO_PIN
على 0
لمنع Corepack من تحديث حقل packageManager
عندما يكتشف أن الحزمة المحلية لا تدرجها. بشكل عام، نوصي بإدراج حقل packageManager
دائمًا (والذي يمكنك تعيينه بسهولة من خلال corepack use [name]@[version]
) ، لأنه يضمن أن عمليات تثبيت مشروعك تكون حتمية دائمًا.
يمكن ضبط COREPACK_ENABLE_DOWNLOAD_PROMPT
على 0
لمنع Corepack من إظهار عنوان URL عندما يحتاج إلى تنزيل البرنامج، أو يمكن ضبطه على 1
لإظهار عنوان URL. افتراضيًا، عندما يتم استدعاء Corepack بشكل صريح (على سبيل المثال، corepack pnpm …
)، يتم تعيينه على 0
؛ عندما يتم استدعاء Corepack ضمنيًا (على سبيل المثال pnpm …
)، يتم ضبطه على 1
. عندما يكون الإدخال القياسي هو TTY ولم يتم اكتشاف أي بيئة CI، سيطلب Corepack إدخال المستخدم قبل بدء التنزيل.
يمكن ضبط COREPACK_ENABLE_UNSAFE_CUSTOM_URLS
على 1
للسماح باستخدام عناوين URL المخصصة لتحميل مدير الحزم المعروف بواسطة Corepack ( yarn
و npm
و pnpm
).
يمكن ضبط COREPACK_ENABLE_NETWORK
على 0
لمنع Corepack من الوصول إلى الشبكة (وفي هذه الحالة ستكون مسؤولاً عن ترطيب إصدارات مدير الحزم التي ستكون مطلوبة للمشاريع التي ستقوم بتشغيلها، باستخدام corepack install -g --cache-only
).
يمكن ضبط COREPACK_ENABLE_STRICT
على 0
لمنع Corepack من إلقاء الخطأ إذا كان مدير الحزم لا يتوافق مع المدير المحدد للمشروع الحالي. وهذا يعني أنه إذا كان المستخدم يستخدم مدير الحزم المحدد في المشروع الحالي، فسوف يستخدم الإصدار المحدد بواسطة حقل packageManager
الخاص بالمشروع. ولكن إذا كان المستخدم يستخدم مدير حزم آخر مختلفًا عن المدير المحدد للمشروع الحالي، فسوف يستخدم إصدار مدير الحزم على مستوى النظام.
يمكن ضبط COREPACK_ENABLE_PROJECT_SPEC
على 0
لمنع Corepack من التحقق مما إذا كان مدير الحزم يتوافق مع المدير المحدد للمشروع الحالي. وهذا يعني أنه سيستخدم دائمًا مدير الحزم على مستوى النظام بغض النظر عما يتم تحديده في حقل packageManager
الخاص بالمشروع.
يمكن تعيين COREPACK_HOME
لتحديد المكان الذي يجب أن يقوم Corepack بتثبيت مديري الحزم فيه. افتراضيًا، يتم تعيينه على %LOCALAPPDATA%nodecorepack
على نظام التشغيل Windows، وعلى $HOME/.cache/node/corepack
في أي مكان آخر.
ليس لـ COREPACK_ROOT
أي تأثير وظيفي على Corepack نفسها؛ يتم تعيينه تلقائيًا في بيئتك بواسطة Corepack عندما يتم إرساله إلى مديري الحزم الأساسية، حتى يتمكنوا من اكتشاف ميزاته (مفيد لأوامر مثل yarn init
).
يقوم COREPACK_NPM_REGISTRY
بتعيين عنوان url الأساسي للتسجيل المستخدم عند استرداد مديري الحزم من npm. القيمة الافتراضية هي https://registry.npmjs.org
يقوم COREPACK_NPM_TOKEN
بتعيين رأس ترخيص الرمز المميز لحاملها عند الاتصال بسجل من النوع npm.
COREPACK_NPM_USERNAME
و COREPACK_NPM_PASSWORD
لتعيين رأس ترخيص أساسي عند الاتصال بسجل من النوع npm. لاحظ أن كلا متغيري البيئة مطلوبان وكنص عادي. إذا كنت تريد إرسال كلمة مرور فارغة، فقم بتعيين COREPACK_NPM_PASSWORD
بشكل صريح إلى سلسلة فارغة.
يتم دعم HTTP_PROXY
و HTTPS_PROXY
و NO_PROXY
من خلال node-proxy-agent
.
يمكن تعيين COREPACK_INTEGRITY_KEYS
على سلسلة فارغة أو 0
لتوجيه Corepack لتخطي عمليات التحقق من التكامل، أو إلى سلسلة JSON تحتوي على مفاتيح مخصصة.
هناك مجموعة واسعة من مشكلات الشبكة التي يمكن أن تحدث أثناء تشغيل أوامر corepack
. الأشياء التي يجب التحقق منها:
تأكد من أن اتصال الشبكة نشط.
تأكد من إمكانية حل المضيف لطلبك عن طريق DNS الخاص بك؛ حاول استخدام curl [URL]
(ipv4) و curl -6 [URL]
(ipv6) من الصدفة الخاصة بك.
تحقق من إعدادات الوكيل لديك (راجع متغيرات البيئة).
انظر CONTRIBUTING.md
.
راجع LICENSE.md
.