"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > إتقان ليرنا: دليل لإدارة جافا سكريبت Monorepos

إتقان ليرنا: دليل لإدارة جافا سكريبت Monorepos

تم النشر بتاريخ 2024-11-01
تصفح:214

Mastering Lerna: A Guide to Managing JavaScript Monorepos

قائمة المحتويات

  1. مقدمة
  2. الفصل الأول: ما هي ليرنا؟
    • لماذا مونوريبوس؟
  3. الفصل الثاني: تثبيت وإعداد Lerna
    • المتطلبات الأساسية
    • دليل التثبيت خطوة بخطوة
    • إعداد مشروع ليرنا الأول الخاص بك
  4. الفصل الثالث: إدارة التبعية في ليرنا
    • التبعيات المستقلة
    • رفع التبعيات المشتركة
    • حزم التمهيد
  5. الفصل الرابع: تشغيل البرامج النصية عبر الحزم
    • تنفيذ البرامج النصية على مستوى العالم
    • استهداف حزم محددة
  6. الفصل الخامس: الإصدار والنشر باستخدام Lerna
    • الوضع الثابت مقابل الوضع المستقل
    • نشر الحزم على npm
  7. الفصل السادس: استخدام Lerna مع مساحات عمل الغزل
    • تمكين مساحات عمل الغزل في ليرنا
    • تحسين سير العمل باستخدام مساحات عمل Lerna Yarn
  8. الفصل السابع: الاستخدام المتقدم لليرنا
    • أوامر التصفية
    • إنشاء أوامر مخصصة
  9. الفصل الثامن: أفضل الممارسات لليرنا مونوريبوس
    • تنظيم الحزمة المنطقية
    • أتمتة الاختبارات والإصدارات
    • تكامل CI/CD
  10. خاتمة
  11. ملحق: أوامر ليرنا الشائعة

مقدمة

يمكن أن تشكل إدارة مشاريع JavaScript أو TypeScript واسعة النطاق التي تتضمن حزمًا مترابطة متعددة تحديًا كبيرًا للمطورين وفرق التطوير. في كثير من الأحيان، يعتمد المطورون على مستودعات متعددة لكل حزمة، مما يؤدي إلى زيادة النفقات العامة فيما يتعلق بصيانة التعليمات البرمجية، وإدارة التبعية، والتعاون.

Lerna، أداة قوية تم تطويرها لإدارة monorepos، تعمل على تبسيط هذه العملية. تمكن Monorepos الفرق من استضافة حزم متعددة في مستودع واحد، مما يبسط إدارة التبعية ويجعل التعاون بين الفرق أكثر سلاسة.

يهدف هذا الكتاب الإلكتروني إلى توفير دليل كامل لاستخدام Lerna لإدارة monorepos بكفاءة. سواء كنت تتعامل مع مكتبة مكونات أو مشروعًا واسع النطاق يحتوي على العديد من الحزم المترابطة، ستجد رؤى قيمة لمساعدتك في تحقيق أقصى قدر من الإنتاجية مع Lerna.


الفصل الأول: ما هي ليرنا؟

Lerna هي أداة مفتوحة المصدر تسهل إدارة الحزم المتعددة في monorepo. فهو يوفر ميزات قوية مثل إدارة التبعية التلقائية، وإصدار الإصدارات، والنشر، مما يسهل الحفاظ على مشاريع JavaScript وTypeScript على نطاق واسع.

لماذا مونوريبوس؟

تعتبر Monorepos خيارًا معماريًا للعديد من المشاريع واسعة النطاق، لأنها توفر العديد من الفوائد:

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

على الرغم من هذه الفوائد، فإن إدارة monorepo يمكن أن تجلب تحديات فريدة، خاصة في إدارة التبعيات والإصدارات. تم تصميم Lerna لمواجهة هذه التحديات بشكل مباشر، مما يوفر سير عمل محسّنًا لـ monorepos.


الفصل الثاني: تثبيت وإعداد Lerna

المتطلبات الأساسية

قبل البدء، تأكد من تثبيت Node.js وnpm (أو Yarn). Lerna متوافق مع كل من npm وYarn.

الخطوة 1: تثبيت ليرنا

يمكنك تثبيت Lerna عالميًا عبر npm:

npm install --global lerna

بدلاً من ذلك، يمكنك إضافة Lerna كتبعية تطوير في مشروعك:

npm install --save-dev lerna

الخطوة 2: تهيئة Lerna Monorepo

بمجرد التثبيت، قم بتهيئة monorepo الخاص بك عن طريق الانتقال إلى دليل مشروعك وتشغيل:

lerna init

سيؤدي هذا إلى إنشاء ملفات التكوين الأساسية، بما في ذلك lerna.json، وإعداد مجلد الحزم حيث ستوضع الحزم الفردية الخاصة بك.

الخطوة 3: إضافة الحزم

في مشروع Lerna، توجد كل حزمة في مجلد فرعي خاص بها ضمن الحزم. يجب أن يكون لكل حزمة ملف package.json خاص بها لإدارة التبعية.

هيكل العينة:

/my-project
  /packages
    /package-a
    /package-b
  lerna.json
  package.json

الفصل الثالث: إدارة التبعية في ليرنا

تعد إدارة التبعيات عبر حزم متعددة إحدى نقاط القوة الأساسية لدى Lerna.

التبعيات المستقلة

تسمح لك Lerna بإضافة تبعيات إلى حزمة معينة. على سبيل المثال، إذا كانت الحزمة-a فقط هي التي تحتاج إلى lodash، فيمكنك تشغيل:

lerna add lodash --scope=package-a

رفع التبعيات المشتركة

عندما تشترك حزم متعددة في التبعيات، يمكنك رفع تلك التبعيات إلى جذر monorepo الخاص بك. وهذا يقلل من التكرار ويسرع عمليات التثبيت. لتمكين الرفع، أضف هذا إلى lerna.json:

{
  "hoist": true
}

تمهيد التشغيل

لتثبيت التبعيات وربط الحزم التي تعتمد على بعضها البعض، قم بتشغيل:

lerna bootstrap

يضمن هذا تثبيت جميع التبعيات الخارجية الضرورية وأن الحزم يمكن أن تشير إلى بعضها البعض بشكل صحيح.


الفصل الرابع: تشغيل البرامج النصية عبر الحزم

تسهل Lerna تنفيذ البرامج النصية (على سبيل المثال، البناء والاختبار والوبر) عبر جميع الحزم في monorepo الخاص بك.

تنفيذ البرامج النصية على مستوى العالم

لتشغيل برنامج نصي مثل البناء عبر جميع الحزم، استخدم:

lerna run build

استهداف حزم محددة

إذا كنت تريد تشغيل برنامج نصي في حزم معينة فقط، فاستخدم علامة --scope:

lerna run test --scope=package-a

تسمح هذه المرونة بتنفيذ أكثر استهدافًا، مما يوفر الوقت أثناء التطوير.


الفصل الخامس: الإصدار والنشر باستخدام Lerna

توفر Lerna ميزات قوية للإصدار والنشر، مما يسمح لك بإصدار الحزم وإصدارها بسهولة.

1. الوضع الثابت

في الوضع الثابت، تشترك جميع الحزم في نفس رقم الإصدار. عند تحديث أي حزمة، يتم زيادة رقم الإصدار للجميع.

2. الوضع المستقل

في الوضع المستقل، يكون لكل حزمة رقم الإصدار الخاص بها. عندما يتم تغيير حزمة، يتم تحديث إصدار تلك الحزمة فقط.

للتحويل إلى الوضع المستقل، قم بتعديل lerna.json:

{
  "version": "independent"
}

حزم النشر

لنشر حزمك على npm، قم بتشغيل:

lerna publish

سوف تتولى Lerna عملية الإصدار والنشر بناءً على التكوين الخاص بك.


الفصل السادس: استخدام Lerna مع مساحات عمل الغزل

يمكن أن يؤدي الجمع بين Lerna وYarn Workspaces إلى تحسين إدارة التبعيات من خلال رفع المزيد من التبعيات المشتركة.

لتفعيل Yarn Workspaces، قم بتعديل ملف lerna.json الخاص بك:

{
  "npmClient": "yarn",
  "useWorkspaces": true
}

ثم قم بتحديث ملف package.json الخاص بك:

{
  "workspaces": ["packages/*"]
}

يعمل هذا التكامل على تعزيز الأداء وتبسيط إدارة المشاريع واسعة النطاق.


الفصل السابع: الاستخدام المتقدم لليرنا

أوامر التصفية

يسمح Lerna بالتصفية لتشغيل أوامر لحزم معينة أو لاستبعاد حزم معينة.

مثال للتشغيل على حزم محددة:

lerna run build --scope=package-a --scope=package-b

مثال لاستثناء الحزم:

lerna run build --ignore=package-c

الأوامر المخصصة

يمكنك تحديد أوامر Lerna المخصصة داخل package.json لسير العمل المتخصص. ويمكن بعد ذلك تشغيل هذه الأوامر عبر الحزم الخاصة بك.


الفصل الثامن: أفضل الممارسات لليرنا مونوريبوس

  1. تنظيم الحزم بشكل منطقي: قم بتجميع الحزم ذات الصلة معًا لإعادة استخدام التعليمات البرمجية بشكل أفضل.
  2. استخدام الرفع: يؤدي رفع التبعيات المشتركة إلى توفير المساحة وتسريع أوقات التثبيت.
  3. أتمتة الاختبار: استخدم lerna run لأتمتة الاختبار عبر جهاز monorepo بالكامل.
  4. خطوط أنابيب CI/CD: تنفيذ التكامل المستمر وسير عمل النشر لاختبار التغييرات ونشرها تلقائيًا.
  5. مساحات عمل الغزل: استفد من مساحات عمل الغزل مع Lerna لإدارة التبعية بشكل أفضل.

خاتمة

Lerna هي أداة لا تقدر بثمن لإدارة monorepos، حيث تقدم ميزات تعمل على تبسيط عمليات سير العمل المعقدة، بدءًا من إدارة التبعية وحتى إصدار الإصدارات والنشر. من خلال اعتماد Lerna، يمكن للفرق تقليل التعقيد وتبسيط العمليات وتحسين التعاون، مما يسهل الحفاظ على المشاريع واسعة النطاق.

سواء كنت تعمل على مكتبة مكونات بسيطة أو نظام بيئي متعدد الحزم، توفر Lerna الأدوات اللازمة لإدارة مشروعك بفعالية. استمر في تجربة ميزات Lerna المتقدمة لإطلاق العنان لإمكاناتها الكاملة.


ملحق: أوامر ليرنا الشائعة

  • lerna init: تهيئة Lerna monorepo.
  • lerna bootstrap: تثبيت التبعيات وحزم الروابط.
  • lerna add [package] --scope=[package-name]: إضافة تبعية إلى حزمة معينة.
  • lerna run [script]: تشغيل البرنامج النصي عبر جميع الحزم.
  • lerna Publish: ينشر الحزم إلى npm.

ترميز سعيد :)

بيان الافراج يتم استنساخ هذه المقالة على: https://dev.to/samuel_kinuthia/mastering-lerna-a-guide-to-managing-javaScript-monorepos-4f2b؟1 إذا كان هناك أي انتهاك ، فيرجى الاتصال بـ [email protected] لحذفها.
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3