Розмір модульних вузлів Подивіться, як я зменшив його на 90%

  • розмір

Керівник команди Node.js

Зараз ранок понеділка, і вам потрібно створити новий проект. Ви встановлюєте всі необхідні пакунки npm, а потім починаєте працювати над деякими функціями. Рано чи пізно ви виявите проблему, яка вимагає виняткового кодування, тому ви звертаєтесь до Google і шукаєте відповідь - можливо пакет. Ви встановлюєте його та створюєте образ виробничого пакету. Потім ви дивитесь на його розмір і ... ось так у вас трапляється серцевий напад. "Як у мене вийшло 1 Гб node_modules ?!" - боротьба реальна, і повірте мені, у ТТГ ми були там уже кілька разів. Але не бійтеся, можна щось зробити для зменшення цього розміру! Ми створили кілька простих кроків, щоб зменшити його розмір. Просто йдіть за мною, будь ласка ...

Наша попередня історія node_modules

Не так давно ми працювали над цим британським проектом fintech, де нам довелося перенести систему на архітектуру мікросервісу за допомогою Node.js. Коли ми ознайомились з платформою, ми отримали від клієнта дві вимоги - вона повинна бути ефективною та легкою. Продуктивність не є проблемою для Node.js (якщо ви випадково не заблокуєте цикл подій), однак, це може бути легким. Початкове зображення становило 32 Мб, що є дуже приємним результатом, але швидко виявилося, що справжньою проблемою є node_modules.

На відміну від того, що ви думаєте, розмір програми важливий у кількох областях:

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

Розробники люблять спрощувати свою роботу, щоб робити все швидше - саме тому вони включають додаткові бібліотеки. На жаль, це призводить до збільшення розміру всієї програми, що може дуже швидко вийти з-під контролю. Ось так почалася наша пригода з “схудненням”. То що ми зробили, щоб їх зменшити?

Зацікавлений у розвитку мікросервісів? 🤔 Обов’язково перегляньте наш звіт про стан мікросервісів 2020 - на основі думок 650+ експертів з мікросервісів!

Зменшити кількість залежностей

Це звучить очевидно, але перед тим, як ми перейдемо до більш інвазивних рішень, можливо, вам слід подумати про пакети, які ви встановлюєте. Вам справді потрібні всі вони?

У TSH ми використовуємо сайти, такі як npm.broofa або npm.anvaka, щоб насправді побачити цілий графік залежностей для одного пакету, а потім обговорюємо, чи це щось ми шукаємо.

Без жартів!

Багато разів я бачу людей, які встановлюють Jest лише для простих модульних тестів (близько 460+ залежностей, +/- 60 МБ), коли є менші бібліотеки, які будуть робити те саме (Mocha - 115 залежностей, 12 МБ).