Ledger Live Monorepo Project: חלק 2 - הכלים (Make it Shine) | פִּנקָס

Ledger Live Monorepo Project: חלק 2 – הכלים (Make it Shine) | פִּנקָס

צומת המקור: 2985172

כניסה שנייה לסדרת הפוסטים בבלוג "Ledger Live Monorepo Project", שבה מפתח Ledger מספר לנו את סיפור ההגירה העצומה של בסיס הקוד Ledger Live למאגר מונו. אם פספסת את חלק 1, בדוק אותו כאן:

לאחר שקבענו שארכיטקטורת מונורפו היא פתרון בר-קיימא, התחלנו לבדוק את הכלים הזמינים לביצוע התוכנית שלנו.

טיפול במספר פרויקטים

בצוות Ledger Live אנו מנווטים במערכת האקולוגית של JavaScript, ולמרבה המזל, כבר ידענו על מספר דרכים לטפל במספר פרויקטים עם מנהל החבילות שלנו. חלק מאותם פתרונות אפשריים כוללים:

  • NPM (יש תמיכה בסביבות עבודה אבל חלופות טובות יותר),
  • חוט 1 (הופכים ישנים מדי, חלופות טובות ויעילות יותר),
  • חוט ≥ 2 (רעיון מעניין, אבל plug n play לא נתמך היטב בכל מקום, במיוחד עם React Native),
  • PNPM (קישורים סימליים, בנויים תוך מחשבה על סביבות עבודה, יעיל בדיסק).

לאחר שבדקנו את כל אלה, החלטנו ללכת עם PNPM עבור:

  • יעילות הדיסק (הוא משתמש בווירטואלי חנות ו קישורים סימבוליים, כך שהחבילות יורדות פעם אחת בלבד ואז מקושרות ל-node_modules שלך מהחנות הוירטואלית),
  • המהירות (מכיוון שהחבילות נמצאות במטמון, ההתקנות הבאות מהירות הרבה יותר),
  • תמיכה מובנית עבור סביבות עבודה/ארכיטקטורת מונורפו (כינויים, תזמור וכו'...).

על הנייר PNPM הוא פנינה מוחלטת, אבל סימלינקים היו קצת מוזרים להגדרה נכונה (שוב, במיוחד עם React Native).

אוקיי, אז הבחירה שלנו נעשתה, היינו הולכים עם PNPM.

תזמורת תסריט

אף על פי PNPM מוסיף עוד ועוד תזמור לתכונות שלו, זה עדיין לא מכסה את כל מה שרצינו לעשות, כגון:

  • בנייה ברצף,
  • מטמון.

עבור אלה, מצאנו שני מתמודדים מעניינים שהיינו צריכים להסתכל עליהם:

  • NX (על ידי הצוות הזוויתי),
  • טורבורפו (שהכריזה זה עתה על v1.0.0 כשהתחלנו לעבוד עליו, ועכשיו עובדים עם צוות Vercel).

עשינו הוכחה לקונספט על שניהם.

NX היו לו הרבה יותר תכונות, גנרטורים, אוטומציה, גרפי תלות מעולים וכו'... אבל, זה הוסיף הרבה תקורה, ומכיוון שהוא די דעתני, נצטרך לעקוב אחר המוסכמות שלהם.

טורבורפו מצד שני, הוא די בסיסי מבחינת תכונה. עם זאת, זהו פתרון Plug and Play נוח שנוכל לשנות מהר מאוד אם יגיע הצורך אי פעם.

אף על פי טורבורפו היו פחות תכונות מאשר NX, הוא עשה את 2 הדברים שחיפשנו:

  • תזמור של מבנים המכבדים את עץ התלות (ובנייה במקביל),
  • שמירה במטמון (בניינים נשמרים במטמון ו'מושמעים מחדש' אם הקוד שלהם לא השתנה).

זה, בתוספת הירידה/הנושרה הקלה, גרם לנו לבחור את הילד החדש בשכונה, TurboRepo.

גרסאות

בדקנו גם כמה פתרונות, אבל בסופו של דבר החלטנו להשתמש בהם https://github.com/changesets/changesets מכיוון שזה היה כלי אחד שהמליץ ​​על TurboRepo, ואחרי קצת קריאת תיעוד, נראה היה שהוא תואם את הצרכים שלנו.

מפתחים יצטרכו להיות קצת יותר קפדניים בזרימת הפיתוח שלהם ולספק changesets (קובץ המתאר איזו ספרייה הקוד שלהם משתנה, חומרת ה- סמבר מוסכמה, ותיאור השינוי). אלה changesets לאחר מכן משמשים כדי לחבוט אוטומטית בגרסה של החבילות המכבדות את חומרות הנתון, כמו גם להפוך את היצירה של מחלפים. נוסף על כך, הכלים מאפשרים pre release במצב, ה-🍒 ב-🍰.

מה הלאה ?

לאחר ההחלטה על הכלים, הגיע הזמן להתחיל לעבוד. במאמר הבא בבלוג נדבר על מערכת ה-build וכל הפיתוחים / אוטומציה / אינטגרציה מתמשכת בהקשר של מאגר מונו.


ולנטין דה אלמידה
ניסיון במפתחים & Core Tech - Ledger Live

בול זמן:

עוד מ פנקס