Як Patreon перевів 11 000 файлів на TypeScript за 7 років: від ручної роботи до AI-агентів

💡 Усі статті, обговорення, новини про Front-end — в одному місці. Приєднуйтесь до Front-end спільноти!

Побачила цікаву статтю в інженерному блозі Patreon. Вони детально розібрали свій перехід з JavaScript на TypeScript: 11 тисяч файлів, понад 1 мільйон рядків коду і цілих 7 років роботи (з 2019 по початок 2026-го).

Цікаво те, як вони змінювали підходи до міграції. Спочатку вони просто увімкнули підтримку TS і дозволили командам переходити на нього добровільно, але спрацювало це не дуже. Без обов’язкової перевірки типів у CI та спільних базових типів TypeScript працював як звичайний автокомпліт. Кодова база швидко обросла технічним боргом, бо кожен розробник описував сутності по-своєму або просто не додавав типи.

Тому пізніше підхід змінили: тайпчек зробили обов’язковим на рівні CI, а ядро системи, включно з API-об’єктами, роутингом та аналітикою, системно типізували. Це вирішило проблему для нового коду, але залишилось понад 2000 файлів старого легасі ще з 2013 року. Ручна міграція одного такого файлу займала б від двох до чотирьох годин.

Частину простих компонентів вони автоматично перегнали через опенсорсну утиліту ts-migrate від Airbnb. Потім почали писати кастомні codemods за допомогою GPT-4 та Claude, які обробляли специфічні патерни в коді, з якими ts-migrate не міг впоратися. А для найскладнішого легасі розробили систему з вузькоспеціалізованих AI-агентів.

Один агент шукав конкретні патерни у коді (наприклад, усі нетипізовані Redux-редьюсери). Другий аналізував їх, підтягував уже існуючі типи і додавав їх. Третій агент робив рев’ю, а підозрілі зміни позначав для перевірки людиною. Після цього кожен такий пакет змін обов’язково проганяли через CI з E2E та юніт-тестами.

Зараз у них немає жодного JS-файлу у проєкті, хоча ще залишилося розгрібати близько п’яти тисяч коментарів @ts-expect-error, які вони залишили як тимчасові милиці.

Оригінал статті можна почитати тут: www.patreon.com/...​s-to-typescript-152144830

А чи був у вас досвід подібних масштабних міграцій на проєктах? Можливо, теж вже пробували автоматизувати рефакторинг через ШІ та скрипти?
👍ПодобаєтьсяСподобалось3
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

тю, вон в Микрософт из плюсов в раст скорость 1 человек 1 миллион строк за 1 месяц )

Підписатись на коментарі