Що таке кутовий бюджет CLI?
Бюджети - одна з менш відомих особливостей Angular CLI. Це досить невелика, але дуже акуратна особливість!
Коли додатки зростають у функціональності, вони також збільшуються в розмірах. Бюджети - це функція у кутовому інтерфейсі CLI, яка дозволяє встановлювати порогові значення бюджету у вашій конфігурації, щоб забезпечити, щоб частини вашої програми перебували в межах встановлених вами меж - Офіційна документація
Або іншими словами, ми можемо описати наш Angular додаток як набір складених файлів JavaScript, які називаються пакетами, які виробляються процесом збирання. Кутові бюджети дозволяють нам налаштувати очікувані розміри цих пакетів. Більше того, ми можемо налаштувати пороги для умов, коли ми хочемо отримати попередження або навіть не вдалося побудувати з помилкою, якщо розмір пакету надто вийде з-під контролю!
Як визначити бюджет?
Кутові бюджети визначаються у файлі angular.json. Бюджети визначаються за проектом, що має сенс, оскільки кожна програма в робочій області має різні потреби.
Думаючи прагматично, має сенс лише визначати бюджети для нарощування виробництва. Prod build створює пачки з "справжнім розміром" після застосування всіх оптимізацій, таких як струшування дерев та мінімізація коду.
На жаль, помилка побудови! Максимальний розмір пакета було перевищено. Це чудовий сигнал, який говорить нам, що щось пішло не так ...
- Ми, можливо, експериментували в нашій функції і не чистили належним чином
- Наші інструменти можуть піти не так і виконати поганий автоматичний імпорт, або ми виберемо поганий товар із запропонованого списку імпорту
- Ми можемо імпортувати речі з ледачих модулів у невідповідних місцях
- Наша нова функція просто дуже велика і не вписується в існуючі бюджети
Перший підхід: чи зберігаються ваші файли?
Взагалі кажучи, gzipped файл має лише приблизно 20% розміру вихідного файлу, що може різко скоротити початковий час завантаження вашої програми. Щоб перевірити, чи зберегли ви файли, просто відкрийте вкладку мережі консолі розробника. У розділі "Заголовки відповідей", якщо ви побачите "Кодування вмісту: gzip", вам добре піти.
Як gzip?
Якщо ви розміщуєте додаток Angular на більшості хмарних платформ або CDN, ви не повинні турбуватися з цього приводу, оскільки вони, ймовірно, вирішили це за вас. Однак якщо у вас є власний сервер (наприклад, NodeJS + expressJS), який обслуговує ваш додаток Angular, обов'язково перевірте, чи файли gzipped. Нижче наводиться приклад, щоб отримати статичні активи в додатку NodeJS + expressJS. Ви навряд чи можете собі уявити, що це мертве просте проміжне програмне забезпечення «стиснення» зменшило б розмір вашого пакета з 2,21 МБ до 495,13 КБ.
const compression = require('compression')
const express = require('express')
const app = express()
app.use(compression())
Другий підхід :: Проаналізуйте свій кутовий пакет
Якщо розмір пакета стає занадто великим, ви можете проаналізувати пакет, тому що, можливо, ви використовували невідповідний пакет великого розміру сторонніх сторін або ви забули видалити якийсь пакет, якщо його більше не використовуєте. Webpack має дивовижну особливість, яка дає нам наочне уявлення про склад пакету webpack.
Отримати цей графік дуже просто.
npm install -g webpack-bundle-analyzer
- У вашому додатку Angular запустіть
ng build --stats-json
(не використовуйте прапор --prod
). Увімкнувши, --stats-json
ви отримаєте додатковий файл stats.json
- Нарешті, запустіть
webpack-bundle-analyzer ./dist/stats.json
і ваш браузер з’явиться на сайті localhost: 8888. Повеселіться з цим.
ref 1: Як кутові бюджети CLI врятували мій день та як вони можуть врятувати ваш
посилання 2: Оптимізуйте розмір кутового пучка в 4 етапи