लेजर लाइव मोनोरेपो प्रोजेक्ट: भाग 2 - उपकरण (इसे चमकाएं) | खाता बही

लेजर लाइव मोनोरेपो प्रोजेक्ट: भाग 2 - उपकरण (इसे चमकाएं) | खाता बही

स्रोत नोड: 2985172

ब्लॉग पोस्ट श्रृंखला "लेजर लाइव मोनोरेपो प्रोजेक्ट" की दूसरी प्रविष्टि, जहां एक लेजर डेवलपर हमें मोनो रिपॉजिटरी में लेजर लाइव कोडबेस के विशाल माइग्रेशन की कहानी बताता है। यदि आप भाग 1 भूल गए हैं, तो इसे यहां देखें:

यह स्थापित करने के बाद कि मोनोरेपो आर्किटेक्चर एक व्यवहार्य समाधान था, हमने अपनी योजना को लागू करने के लिए उपलब्ध उपकरणों पर गौर करना शुरू किया।

अनेक परियोजनाओं को संभालना

लेजर लाइव टीम में हम जावास्क्रिप्ट पारिस्थितिकी तंत्र में नेविगेट करते हैं, और सौभाग्य से, हम पहले से ही अपने पैकेज मैनेजर के साथ कई परियोजनाओं को संभालने के कई तरीकों के बारे में जानते थे। उनमें से कुछ संभावित समाधानों में शामिल हैं:

  • NPM (कार्यस्थानों के लिए समर्थन है लेकिन बेहतर विकल्प हैं),
  • सूत 1 (बहुत पुराना, बेहतर और अधिक कुशल विकल्प बनना),
  • सूत ≥ 2 (दिलचस्प विचार है, लेकिन प्लग एन प्ले हर जगह अच्छी तरह से समर्थित नहीं है, खासकर रिएक्ट नेटिव के साथ),
  • पीएनपीएम (सिम्लिंक, कार्यस्थानों को ध्यान में रखकर निर्मित, डिस्क कुशल)।

ये सब देखने के बाद हमने साथ चलने का फैसला किया पीएनपीएम के लिए:

  • डिस्क दक्षता (यह वर्चुअल का उपयोग करता है की दुकान और सिमलिंक, इसलिए पैकेज केवल एक बार डाउनलोड किए जाते हैं और फिर वर्चुअल स्टोर से आपके नोड_मॉड्यूल से जुड़े होते हैं),
  • गति (चूंकि पैकेज कैश्ड हैं, बाद की स्थापनाएँ बहुत तेज़ हैं),
  • कार्यस्थानों/मोनोरेपो आर्किटेक्चर (उपनाम, ऑर्केस्ट्रेशन इत्यादि…) के लिए समर्थन में निर्मित।

कागजों पर पीएनपीएम एक पूर्ण रत्न है, लेकिन सही ढंग से सेटअप करने के लिए सिम्लिंक थोड़ा अजीब था (फिर से, विशेष रूप से रिएक्ट नेटिव के साथ)।

ठीक है, तो हमारी पसंद बन गई, हम साथ चलेंगे पीएनपीएम.

स्क्रिप्ट आर्केस्ट्रा

यद्यपि पीएनपीएम इसकी विशेषताओं में अधिक से अधिक ऑर्केस्ट्रेशन जोड़ता है, फिर भी इसमें वह सब कुछ शामिल नहीं है जो हम करना चाहते थे, जैसे:

  • अनुक्रमिक निर्माण,
  • कैशिंग

इनके लिए, हमें दो दिलचस्प दावेदार मिले जिन पर हमें एक नज़र डालने की ज़रूरत थी:

  • NX (कोणीय टीम द्वारा),
  • टर्बोरेपो (जिसने अभी-अभी v1.0.0 की घोषणा की थी जब हमने इस पर काम करना शुरू किया था, और अब वर्सेल टीम के साथ काम कर रहे हैं)।

हमने दोनों पर अवधारणा का प्रमाण दिया।

NX इसमें बहुत अधिक सुविधाएँ, जनरेटर, स्वचालन, महान निर्भरता ग्राफ़ इत्यादि थे... लेकिन, इसमें बहुत अधिक ओवरहेड जोड़ा गया था, और चूंकि यह काफी मनमौजी है, इसलिए हमें उनके सम्मेलनों का पालन करना होगा।

टर्बोरेपो दूसरी ओर, फीचर के लिहाज से यह काफी बुनियादी है। फिर भी यह एक सुविधाजनक प्लग एंड प्ले समाधान है जिसे जरूरत पड़ने पर हम बहुत जल्दी बदल सकते हैं।

यद्यपि टर्बोरेपो की तुलना में कम सुविधाएँ थीं NX, इसने वे 2 चीज़ें कीं जिनकी हम तलाश कर रहे थे:

  • निर्भरता वृक्ष (और समवर्ती बिल्ड) का सम्मान करते हुए बिल्ड का ऑर्केस्ट्रेशन,
  • कैशिंग (यदि उनका कोड नहीं बदला है तो बिल्ड को कैश किया जाता है और 'रीप्ले' किया जाता है)।

इसके अलावा, आसान ड्रॉप-इन/ड्रॉप-आउट ने हमें ब्लॉक पर नए बच्चे को चुनने के लिए प्रेरित किया, टर्बोरेपो.

संस्करण

हमने कई समाधानों पर भी गौर किया, लेकिन अंततः उपयोग करने का निर्णय लिया https://github.com/changesets/changesets चूँकि यह TurboRepo द्वारा अनुशंसित एक उपकरण था, और दस्तावेज़ीकरण को थोड़ा पढ़ने के बाद, यह हमारी आवश्यकताओं का अनुपालन करता प्रतीत हुआ।

डेवलपर्स को अपने विकास प्रवाह और आपूर्ति में थोड़ा और अधिक कठोर होने की आवश्यकता होगी changesets (फ़ाइल यह बताती है कि किस लाइब्रेरी में उनका कोड बदलता है, गंभीरता निम्नलिखित है सेवर सम्मेलन, और परिवर्तन का विवरण)। इन changesets फिर दी गई गंभीरताओं का सम्मान करते हुए पैकेजों के संस्करण को स्वचालित रूप से टक्कर देने के साथ-साथ पीढ़ी को स्वचालित करने के लिए उपयोग किया जाता है बदलाव. उसके शीर्ष पर, उपकरण इसकी अनुमति देता है pre release मोड, 🍒 पर 🍰।

आगे क्या होगा ?

उपकरणों पर निर्णय लेने के बाद, काम शुरू करने का समय आ गया। अगले ब्लॉग लेख में, हम मोनो रिपॉजिटरी के संदर्भ में बिल्ड सिस्टम और सभी डेव-ऑप्स/ऑटोमेशन/निरंतर एकीकरण के बारे में बात करेंगे।


वैलेन्टिन डी अल्मेडा
डेवलपर अनुभव और कोर टेक - लेजर लाइव

समय टिकट:

से अधिक खाता