يمكن أن تشكل إدارة مشاريع JavaScript أو TypeScript واسعة النطاق التي تتضمن حزمًا مترابطة متعددة تحديًا كبيرًا للمطورين وفرق التطوير. في كثير من الأحيان، يعتمد المطورون على مستودعات متعددة لكل حزمة، مما يؤدي إلى زيادة النفقات العامة فيما يتعلق بصيانة التعليمات البرمجية، وإدارة التبعية، والتعاون.
Lerna، أداة قوية تم تطويرها لإدارة monorepos، تعمل على تبسيط هذه العملية. تمكن Monorepos الفرق من استضافة حزم متعددة في مستودع واحد، مما يبسط إدارة التبعية ويجعل التعاون بين الفرق أكثر سلاسة.
يهدف هذا الكتاب الإلكتروني إلى توفير دليل كامل لاستخدام Lerna لإدارة monorepos بكفاءة. سواء كنت تتعامل مع مكتبة مكونات أو مشروعًا واسع النطاق يحتوي على العديد من الحزم المترابطة، ستجد رؤى قيمة لمساعدتك في تحقيق أقصى قدر من الإنتاجية مع Lerna.
Lerna هي أداة مفتوحة المصدر تسهل إدارة الحزم المتعددة في monorepo. فهو يوفر ميزات قوية مثل إدارة التبعية التلقائية، وإصدار الإصدارات، والنشر، مما يسهل الحفاظ على مشاريع JavaScript وTypeScript على نطاق واسع.
تعتبر Monorepos خيارًا معماريًا للعديد من المشاريع واسعة النطاق، لأنها توفر العديد من الفوائد:
على الرغم من هذه الفوائد، فإن إدارة monorepo يمكن أن تجلب تحديات فريدة، خاصة في إدارة التبعيات والإصدارات. تم تصميم Lerna لمواجهة هذه التحديات بشكل مباشر، مما يوفر سير عمل محسّنًا لـ monorepos.
قبل البدء، تأكد من تثبيت Node.js وnpm (أو Yarn). Lerna متوافق مع كل من npm وYarn.
يمكنك تثبيت Lerna عالميًا عبر npm:
npm install --global lerna
بدلاً من ذلك، يمكنك إضافة Lerna كتبعية تطوير في مشروعك:
npm install --save-dev lerna
بمجرد التثبيت، قم بتهيئة monorepo الخاص بك عن طريق الانتقال إلى دليل مشروعك وتشغيل:
lerna init
سيؤدي هذا إلى إنشاء ملفات التكوين الأساسية، بما في ذلك lerna.json، وإعداد مجلد الحزم حيث ستوضع الحزم الفردية الخاصة بك.
في مشروع 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.json:
{ "version": "independent" }
لنشر حزمك على npm، قم بتشغيل:
lerna publish
سوف تتولى 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 لسير العمل المتخصص. ويمكن بعد ذلك تشغيل هذه الأوامر عبر الحزم الخاصة بك.
Lerna هي أداة لا تقدر بثمن لإدارة monorepos، حيث تقدم ميزات تعمل على تبسيط عمليات سير العمل المعقدة، بدءًا من إدارة التبعية وحتى إصدار الإصدارات والنشر. من خلال اعتماد Lerna، يمكن للفرق تقليل التعقيد وتبسيط العمليات وتحسين التعاون، مما يسهل الحفاظ على المشاريع واسعة النطاق.
سواء كنت تعمل على مكتبة مكونات بسيطة أو نظام بيئي متعدد الحزم، توفر Lerna الأدوات اللازمة لإدارة مشروعك بفعالية. استمر في تجربة ميزات Lerna المتقدمة لإطلاق العنان لإمكاناتها الكاملة.
ترميز سعيد :)
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3