
Оптимизация next.js monorepo приложения
Bez_Sahara 29 минут назад Оптимизация next.js monorepo приложения Простой 7 мин 768 JavaScript * IT-инфраструктура * Серверная оптимизация * ReactJS * NestJS * Кейс Из песочницы Дисклеймер: Данный кейс основан на...
<5 — 2026'da uzaya kaç SpaceX Starship fırlatması ulaşacak?
В сфере искусственного интеллекта произошло заметное событие. Bez_Sahara 29 минут назад Оптимизация next. js monorepo приложения Простой 7 мин 768 JavaScript * IT-инфраструктура * Серверная оптимизация * ReactJS * NestJS * Кейс Из песочницы Дисклеймер: Данный кейс основан на архитектуре нашего проекта (~2600 файлов). В проектах другого масштаба или с другой структурой зависимости результаты могут отличаться.
Это не «серебряная пуля», а мой личный опыт оптимизации конкретной инфраструктуры. Буду краток, на проекте, где я сейчас работаю, мы с командой заметили огромную проблему со скоростью сборки и весом проекта после билда. Стек у нас React, Next.
Технические детали
Изначальный набор инструментов был такой:БилдTurbopackЛинтинг EslintПроверка типовTypeScript Compiler ФорматированиеPrettierМертвый кодKnipКак видите, вполне стандартный набор инструментов для проекта на React+Next. js, к которым все привыкли и многих они устраивают. Но в какой‑то момент я устал ждать всё то время, пока все проверки пре‑пуш‑хука пройдут.
Тем более, что из‑за кривой настройки проверка проходила не на изменённые файлы, а на весь проект: несколько минут ждать только чтобы узнать, что ты не можешь сделать пуш из‑за другого человека, и так по кругу. Так что я сделал полноценную миграцию на нативные инструменты и настроил их. Начал я с линтера: стандартный Eslint, как оказалось, даже не был способен дойти до конца проекта на базовых настройках.
Он просто падал в OOM(Out‑of‑Memory), но даже в таких условиях линтинг этой малой части занимал 35. 2с на не полную проверку проекта. После увеличения лимитов оперативной памяти до 8 гигабайт, проверка всего проекта наконец‑то смогла пройти, но заняла 146.
Отраслевые последствия
3с, то есть, на каждый пуш приходилось ждать 2. 5 минуты просто на один этап из двух. Заменой ему стала связка из oxlint и ast‑grep, поскольку один лишь oxlint не поддерживал все правила линтинга, что нам были необходимы.
Такая, казалось бы, минорная и простая замена на два нативных инструмента позволила срезать время линтинга с 146. Таким образом, каждый пуш стал на 2 минуты короче для каждого члена команды, что даже при 5 пушах от разработчика в день сэкономило 20 минут времени каждому и часы, если считать общее время всех разработчиков. Дополнительно срезалось потребление оперативной памяти с 6.
79GB на oxlint+ast‑grep. Eslint oxlint+ast‑grepРазницаВремя146. 47хСледующим на разделочный стол попал tsc.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





