У мене є проста програма, ініціалізована користувачем angular-cli
.
Він відображає деякі сторінки відносно 3 маршрутів. У мене є 3 компоненти. На одній із цієї сторінки я використовую lodash
та HTTP модулі Angular 2 для отримання деяких даних (використовуючи RxJS Observable
s map
та subscribe
). Я показую ці елементи за допомогою простого *ngFor
.
Але, незважаючи на те, що моя програма дійсно проста, я отримую величезний (на мій погляд) пакет пакетів і карт. Я не говорю про версії gzip, але розмір до gzipping. Це питання є лише загальним запитом щодо рекомендацій.
Деякі результати тестів:
ng build
Хеш: 8efac7d6208adb8641c1 Час: 10129 мс шматок {0} main.bundle.js, main.bundle.map (основний) 18,7 кБ {3} [початковий] [надано]
фрагмент {1} styles.bundle.css, styles.bundle.map, styles.bundle.map (стилі) 155 kB {4} [початковий] [викладено]
фрагмент {2} scriptpts.bundle.js, scriptpts.bundle.map (сценарії) 128 кБ {4} [початковий] [надано]
шматок {3} vendor.bundle.js, vendor.bundle.map (постачальник) 3,96 Мб [початковий] [надано]
фрагмент {4} inline.bundle.js, inline.bundle.map (inline) 0 байт [запис] [надано]
Зачекайте: пакет пакетів постачальників 10 Мб для такого простого додатка?
ng build --prod
Хеш: 09a5f095e33b2980e7cc Час: 23455ms шматок {0} main.6273b0f04a07a1c2ad6c.bundle.js, main.6273b0f04a07a1c2ad6c.bundle.map (основний) 18,3 кБ {3} [початковий] [надано]
chunk {1} styles.bfdaa4d8a4eb2d0cb019.bundle.css, styles.bfdaa4d8a4eb2d0cb019.bundle.map, styles.bfdaa4d8a4eb2d0cb019.bundle.map (styles) 154 kB {4]
chunk {2} scriptpts.c5b720a078e5464ec211.bundle.js, scriptpts.c5b720a078e5464ec211.bundle.map (сценарії) 128 kB {4} [початковий] [надано]
шматок {3} vendor.07af2467307e17d85438.bundle.js, vendor.07af2467307e17d85438.bundle.map (постачальник) 3,96 Мб [початковий] [надано]
фрагмент {4} inline.a345391d459797f81820.bundle.js, inline.a345391d459797f81820.bundle.map (вбудований) 0 байт [запис] [надано]
Зачекайте знову: такий подібний розмір пакета постачальників для prod?
ng build --prod --aot
Хеш: 517e4425ff872bbe3e5b Час: 22856ms шматок {0} main.95eadabace554e3c2b43.bundle.js, main.95eadabace554e3c2b43.bundle.map (основний) 130 кБ {3} [початковий] [надано]
chunk {1} styles.e53a388ae1dd2b7f5434.bundle.css, styles.e53a388ae1dd2b7f5434.bundle.map, styles.e53a388ae1dd2b7f5434.bundle.map (styles) 154 kB {4} [початковий] [render]
шматок {2} скриптів.e5c2c90547f3168a7564.bundle.js, скрипти.e5c2c90547f3168a7564.bundle.map (сценарії) 128 кБ {4} [початковий] [надано]
фрагмент {3} vendor.41a6c1f57136df286f14.bundle.js, vendor.41a6c1f57136df286f14.bundle.map (постачальник) 2,75 Мб [початковий] [надано]
фрагмент {4} inline.97c0403c57a46c6a7920.bundle.js, inline.97c0403c57a46c6a7920.bundle.map (вбудований) 0 байт [запис] [надано]
ng build --aot
Хеш: 040cc91df4df5ffc3c3f Час: 11011ms фрагмент {0} main.bundle.js, main.bundle.map (main) 130 кБ {3} [початковий] [виведено]
фрагмент {1} styles.bundle.css, styles.bundle.map, styles.bundle.map (стилі) 155 kB {4} [початковий] [викладено]
фрагмент {2} scriptpts.bundle.js, scriptpts.bundle.map (сценарії) 128 кБ {4} [початковий] [надано]
шматок {3} vendor.bundle.js, vendor.bundle.map (постачальник) 2,75 Мб [початковий] [надано]
фрагмент {4} inline.bundle.js, inline.bundle.map (inline) 0 байт [запис] [надано]
Отож кілька запитань щодо розгортання мого додатка в prod:
- Чому пакети постачальників такі величезні?
- Чи правильно використовується тремтіння дерева
angular-cli
? - Як поліпшити розмір цього пакета?
- Чи потрібні файли .map?
- Чи включаються функції тестування в пакети? Мені вони не потрібні у продажі.
- Загальне запитання: які рекомендовані інструменти упакувати для продукту? Можливо
angular-cli
(використання Webpack у фоновому режимі) не найкращий варіант? Чи можемо ми зробити краще?
Я шукав багато дискусій щодо Stack Overflow, але не знайшов жодного загального питання.