Monorepo English: pnpm Workspaces and Turborepo Vocabulary (англійською)

Освоєння англійського словника інструментів monorepo — робочих просторів, підйомів, конвеєрів збирання і топологічного порядку — що використовуються щодня з pnpm і Turborepo.

Introduction

Сучасні команди фронтенд і фул-стека все частіше організовують свій код в monorepo - єдине сховище, що містить кілька пакунків або програм. Такі інструменти, як ** pnpm Workspaces ** і ** TurboRepo ** мають свій власний технічний словник, який може бути заплутаним навіть для досвідчених розробників. Для людей, для яких англійська мова не є рідною, завдання подвоюється: ви повинні розуміти як поняття, так і англійську фразу, яку використовують для його опису. У цьому повідомленні ви дізнаєтесь про найважливіші терміни, щоб ви могли безпечно стежити за документацією, переглядом коду і обговореннями команди.

Що таке робочий простір?

У pnpm робочий простір — це збірка пакунків, якими керується разом у одному сховищі. Ви визначаєте робочі області у файлі з назвою pnpm-workspace.yaml. Коли колега каже * « додайте його як залежність робочого простору » *, він має на увазі, що пакунок слід посилатися локально, а не звантажувати з реєстру.

** Протокол робочого простору ** — це особливий синтаксис workspace:*, який ви пишете у package.json, щоб посилатися на інший локальний пакунок. Наприклад: * « Використовувати протокол робочого простору, щоб зміни у спільній бібліотеці були негайно видимі для пакунка програми. » * Це уникнення опублікування пакунка на npm лише для його тестування.

Відновлення залежностей — це практика пересування спільних пакунків до кореневої теки node_modules замість встановлення окремих копій у кожному пакунку. Ви можете почути: * « pnpm використовує більш жорстку стратегію підйому, ніж npm, щоб запобігти фантомним залежностям. » *

** Phantom dependency ** це пакунок, який використовується вашим кодом, але не вказаний у вашому власному списку package.json. Він працює лише тому, що його встановлює інший пакунок. Це вважається помилкою. Приклад речення: “Збірка зламалася в CI, тому що у нас була фантомна залежність від lodash — вона була піднята з сестриного пакунку в розробці.”

Концепція турбіни

Turborepo — це високопродуктивна система збирання для монорепо. Його головна ідея полягає в тому, що якщо нічого не змінилося, то не слід відновлювати. Це називається приростним збиранням.

** Пошук у кеші ** відбувається, коли Turborepo знаходить збережений результат для завдання і використовує його знову замість повторного виконання завдання. Протилежно - не знайти ключ. У розмові: “CI запуск був швидким, тому що майже кожна задача отримала кеш-потік - тільки пакунок, який ми змінили, потрібно було перебудувати.”

** Скасування кешу ** — це процес прийняття рішення про те, коли кешований результат більше не є чинним і його слід відкинути. Це одна з найвідоміших важких проблем в інформатиці. Ви почуєте: * « Зміна спільного файла налаштувань призведе до анульування кешу для всіх пакунків, які від нього залежать. » *

Розробка і виробництво труб

** Конвейєр збирання ** у Turborepo — це налаштування, яке визначає, які завдання залежать від яких інших завдань. Ви пишете його в turbo.json. Приклад: “Наша конвеєрна збірка запускає lint і test паралельно, потім чекає на обидва перед початком завдання deploy.”

Топологічний порядок (також відомий як топологічне сортування) означає виконання завдань у порядку, який враховує залежності — пакунок має бути збудований перед тим, як будь- який пакунок, що залежить від нього, може бути збудований. “Turborepo автоматично визначає топологічний порядок збирання у всіх пакунках робочого простору.”

Граф пакунків є мапою всіх пакунків і їх залежностей всередині моно- сховища. Коли ви запускаєте turbo build, він читає цей графік, щоб знати, які пакунки збудувати і в якому порядку. “Додання нової залежності між двома пакунками змінює форму графіка пакунків і може сповільнити паралельне збирання.”

Ключовий словник

TermDefinition
workspaceA set of packages managed together in one repository
workspace protocolThe workspace:* syntax that links local packages in package.json
dependency hoistingMoving shared packages to the root node_modules to avoid duplication
phantom dependencyA package used in code but not declared in package.json
cache hitWhen a build tool reuses a stored result instead of re-running a task
cache invalidationDeciding that a cached result is outdated and must be discarded
topological sortOrdering tasks so that dependencies always run before dependants
build pipelineConfiguration that defines task execution order and parallelism

Практичні поради

  1. ** Прочитайте turbo.json уголос. ** Коли ви побачите визначення конвеєра, спробуйте описати його у реченні: * « Задача збирання залежить від завдання збирання всіх залежностей, які виконуються першими ». * Прочитання цього визначення уголос допоможе вам вдосконалити словниковий запас у пам’ яті.

  2. ** Поясніть співробітнику команди, як робити підйом. ** Навчання — один з найкращих способів вивчення мови. Спробуйте описати залежності фантомів і чому строге підняття pnpm не дозволяє їх створювати.

  3. ** Використовуйте правильні прикметники. ** Ми говоримо * «потраплення кешу на завдання» *, * «залежність від пакунка» * і * «перенесення до кореня» *. Зауважте ці маленькі слова — їх легко пропустити, але вони важливі для плавного читання.

  4. ** Перегляньте журнали змін Turborepo і pnpm. ** Зауваження до випуску написано простою технічною англійською мовою, використовуючи ці терміни у реальних реченнях. Читання одного запису на тиждень природно розвиває словниковий запас.

Conclusion

Монорепо інструменти мають багатий словник, який описує реальні інженерні компроміси - швидкість проти коректності, ізоляція проти зручності. Після того, як ви зрозумієте такі терміни, як протокол робочого простору, підняття залежностей, скасування кешу і топологічне впорядкування, ви зможете повноцінно брати участь у обговоренні архітектури і перегляді коду. Практикуйте використання цих фраз у контексті, і ви швидко почуваєтеся як удома у будь- якій розмові команди з монорепозиторію.

Навигація: звичайні фрази та відгуки

Будьмо чесними - навіть досвідчені розробники іноді натякають на точну мову, що оточує сучасні практики розробки JavaScript. При роботі в середовищі монорепо з використанням таких інструментів, як pnpm і Turborepo, розуміння не тільки чого ви робите, але і як описати це чітко англійською мовою є ключовим для ефективного співробітництва. Одне — це запустити команду; інше — пояснити * чому * ви запустили цю команду колегі або написати чіткий опис запитів на збирання.

Частий сценарій включає отримання зворотнього зв’язку під час перегляду коду. Уявіть таке повідомлення Slack: « Привіт [Ім’ я розробника], чи можете ви пояснити pnpm install у вашому PR? Я помітив, що ви встановлюєте залежності у декількох пакунках — чи навмисно ви намагаєтеся розмістити їх у всьому монорепо?» Ключовим тут є не лише розуміння * того, що * робить команда (встановлення залежностей), але і відповідь з точним і професійним поясненням. Хороша відповідь може бути: “Так, це навмисне. Я використовую pnpm install в кожному каталогу пакунків, щоб забезпечити послідовні версії залежностей у всіх проектах. Це дозволяє уникнути потенційних проблем зі сумісністю, які виникають через використання різних версій у окремих пакунках — ми прагнемо до топологічного порядку залежностей, де зміни у одному пакунку розповсюджуються чисто.» Це демонструє, що ви розумієте наслідки і активно вирішуєте потенційні проблеми.

Інша поширена ситуація виникає під час опису вашої роботи у описі запитів на звантаження (PR). Замість того, щоб просто сказати «Ran build», більш інформативним підходом буде: «Ініціював конвеєр збирання Turborepo для проекту frontend з використанням turborepo run build --target chrome-118. Ця команда використовує вбудоване кешування Turborepo і паралельне виконання для зменшення часу збирання. Вивід зберігається у каталозі /dist/frontend. » Подробиці, які ви можете вказати тут — переглядач цілі, точну команду, яку було використано, і місце розташування результатів — надають змогу переглядачам швидко оцінити ваші зміни і зрозуміти ваш робочий процес. Це про передачу наміру і продемонстрування чіткого розуміння того, як працює інструмент.

Нарешті, пам’ятайте, що «підйом» — це не просто технічний термін; він потребує контексту. Коли ви пояснюєте, чому ви використовуєте робочі простори pnpm ефективно, скажіть щось на зразок: « Ми використовуємо можливості робочого простору pnpm для досягнення оптимізованого процесу збирання — по суті, ми піднімаємо спільні залежності між нашими пакунками, щоб зменшити зайві завантаження і поліпшити ефективність кешування. » Ця фраза чітко повідомляє про переваги добре структурованого моно- сховища.

pnpm install --recursive

Ця проста команда, якщо її правильно використовувати у робочому просторі pnpm, є основою для керування складними залежностями — і ефективне повідомлення про цю складність англійською мовою є ключем до успішного співробітництва.

Поширені запитання

Про що ця стаття "Monorepo English: pnpm Workspaces and Turborepo Vocabulary (англійською)"?

Освоєння англійського словника інструментів monorepo — робочих просторів, підйомів, конвеєрів збирання і топологічного порядку — що використовуються щодня з pnpm і Turborepo.

Чи безкоштовна ця стаття?

Так. Усі статті на CoderSlingo, включно з цією, доступні безкоштовно без реєстрації.

Скільки часу займає читання "Monorepo English: pnpm Workspaces and Turborepo Vocabulary (англійською)"?

Приблизно 7 min.