Связано с Testlify

Testlify — Общая библиотека компонентов

Принял решение построить одну библиотеку компонентов без состояния вместо дублирования UI в четырёх приложениях, выпустил её как приватный npm-пакет и сократил время выпуска функций примерно на 30%.

Testlify работает как набор из четырёх отдельных приложений, и каждое из них по-своему заново собирало одни и те же кнопки, формы, модальные окна и таблицы. Это означало, что одна и та же работа делалась четыре раза, а UI расходился между продуктами. Я обосновал необходимость единой общей библиотеки компонентов вместо дублирования в каждом приложении, а затем собрал и выпустил её.

Что я сделал

  • Решение: Отстаивал идею объединить UI в одну библиотеку, а не позволять каждому приложению держать свою копию, — взвешивая начальные затраты против расхождения и дублирования усилий, которые мы уже несли. Когда решение приняли, я взял разработку на себя.
  • Без состояния по замыслу: Держал компоненты без состояния и презентационными, чтобы они не несли логики, специфичной для приложения, и чисто встраивались в любой из четырёх продуктов. Каждое приложение подключает свои данные и поведение; библиотека же отвечает только за то, как всё выглядит и ощущается.
  • Выпущено как приватный npm-пакет: Опубликовал это как версионированный приватный npm-пакет, так что каждое приложение подтягивает одни и те же компоненты через обычную зависимость и получает исправления и улучшения при обновлении версии — никакого копипаста, никаких форков.

Почему это важно

Разработка UI один раз и переиспользование во всех четырёх приложениях сократили время выпуска функций примерно на 30% — команды перестали заново собирать одни и те же примитивы и начали компоновать из общего набора. Это также дало всему набору продуктов единообразный вид, ведь изменение в библиотеке приходит везде сразу, а не переносится вручную в четыре места.