כניסה שנייה לסדרת הפוסטים בבלוג "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
- הפצת תוכן ויחסי ציבור מופעל על ידי SEO. קבל הגברה היום.
- PlatoData.Network Vertical Generative Ai. העצים את עצמך. גישה כאן.
- PlatoAiStream. Web3 Intelligence. הידע מוגבר. גישה כאן.
- PlatoESG. פחמן, קלינטק, אנרגיה, סביבה, שמש, ניהול פסולת. גישה כאן.
- PlatoHealth. מודיעין ביוטכנולוגיה וניסויים קליניים. גישה כאן.
- מקור: https://www.ledger.com/blog/ledger-live-monorepo-project-part-2-the-tools-make-it-shine
- :יש ל
- :הוא
- :לֹא
- :איפה
- 1
- a
- אודות
- מוּחלָט
- הוסיף
- מוסיף
- לאחר
- שוב
- תעשיות
- מאפשר
- כְּבָר
- חלופות
- an
- ו
- זוויתי
- הודיע
- ארכיטקטורה
- ARE
- מאמר
- AS
- At
- אוטומטי
- באופן אוטומטי
- אוטומציה
- זמין
- בסיסי
- BE
- התהוות
- מוטב
- קצת
- לחסום
- בלוג
- בלוג הודעות
- שניהם
- לִבנוֹת
- בונה
- נבנה
- אבל
- by
- שינוי
- השתנה
- שינויים
- לבדוק
- בחירה
- בחרו
- קוד
- בסיס קוד
- מגיע
- להיענות
- מושג
- במקביל
- הקשר
- רציף
- נוֹחַ
- אמנה
- אמנות
- ליבה
- צורה נכונה
- יכול
- לכסות
- החליט
- מחליטים
- תלות
- המתאר
- תיאור
- dev
- מפתח
- DID
- do
- תיעוד
- לא
- ירידה
- קל
- המערכת האקולוגית
- יְעִילוּת
- יעיל
- כניסה
- במיוחד
- מקימים
- Ether (ETH)
- אי פעם
- הכל
- בכל מקום
- ניסיון
- מהר יותר
- מאפיין
- תכונות
- שלח
- תזרים
- לעקוב
- הבא
- בעד
- למרבה המזל
- מצא
- החל מ-
- פנינה
- דור
- גנרטורים
- נתן
- Go
- גרפים
- גדול
- היה
- יד
- לטפל
- יש
- כאן
- HTTPS
- עצום
- רעיון
- if
- in
- לכלול
- השתלבות
- מעניין
- אל תוך
- IT
- שֶׁלָה
- JavaScript
- רק
- יֶלֶד
- פנקס
- ספר לדג'ר לייב
- פחות
- סִפְרִיָה
- לחיות
- נראה
- נראה
- הסתכלות
- מגרש
- עשוי
- לעשות
- מנהל
- max-width
- הֲגִירָה
- אכפת לי
- החטיא
- מצב
- יותר
- יותר יעיל
- הרבה
- מספר
- יליד
- נווט
- צורך
- נחוץ
- צרכי
- חדש
- הבא
- עַכשָׁיו
- of
- זקן
- on
- פעם
- ONE
- רק
- דוֹגמָטִי
- תזמור
- אחר
- שלנו
- הַחוּצָה
- חבילה
- חבילות
- מאמר
- חלק
- מקום
- תכנית
- אפלטון
- מודיעין אפלטון
- אפלטון נתונים
- לְשַׂחֵק
- תקע
- Plug and Play
- ועוד
- אפשרי
- הודעות
- יפה
- פּרוֹיֶקט
- פרויקטים
- הוכחה
- הוכחה של רעיון או תאוריה
- לספק
- גם
- מהירות
- להגיב
- להגיב יליד
- קריאה
- מוּמלָץ
- מאגר
- כיבוד
- קַפְּדָנִי
- נראה
- סדרה
- התקנה
- כמה
- חוּמרָה
- לזרוח
- since
- So
- פִּתָרוֹן
- פתרונות
- כמה
- במיוחד
- מְהִירוּת
- התחלה
- החל
- עוד
- חנות
- סיפור
- לאחר מכן
- כזה
- תמיכה
- נתמך
- מערכת
- לקחת
- לדבר
- נבחרת
- טק
- אומר
- מֵאֲשֶׁר
- זֶה
- השמיים
- הבלוק
- שֶׁלָהֶם
- אז
- אלה
- דברים
- אלה
- אם כי?
- זמן
- ל
- גַם
- כלי
- כלים
- חלק עליון
- עץ
- שתיים
- בסופו של דבר
- us
- מְשׁוּמָשׁ
- שימושים
- v1
- גרסה
- מאוד
- בַּר חַיִים
- וירטואלי
- רציתי
- היה
- דרכים
- we
- טוֹב
- היו
- מתי
- אשר
- יצטרך
- חכם
- עם
- עובד
- היה
- עוד
- אתה
- זפירנט