У меня есть простое приложение, инициализированное angular-cli
.
Он отображает несколько страниц, относящихся к 3 маршрутам. У меня есть 3 компонента. На одной из этих страниц я использую HTTP-модули lodash
и Angular 2 для получения некоторых данных (используя RxJS Observable
s, map
и subscribe
). Я отображаю эти элементы с помощью простого *ngFor
.
Но, несмотря на то, что мое приложение действительно простое, я получаю огромный (на мой взгляд) пакет и карты. Я не говорю о версиях GZIP, но размер до GZIP. Этот вопрос является просто вопросом общих рекомендаций.
Результаты некоторых тестов:
нг сборка
Hash: 8efac7d6208adb8641c1 Time: 10129ms chunk {0} main.bundle.js, main.bundle.map(main) 18.7 kB {3} [initial] [rendered]
chunk {1} styles.bundle.css, styles.bundle.map, styles.bundle.map(styles) 155 kB {4} [initial] [rendered]
chunk {2} scripts.bundle.js, scripts.bundle.map(scripts) 128 kB {4} [initial] [rendered]
chunk {3} vendor.bundle.js, vendor.bundle.map(vendor) 3.96 MB [initial] [rendered]
chunk {4} inline.bundle.js, inline.bundle.map(inline) 0 bytes [entry] [rendered]
Подождите: 10-мегабайтный пакет поставщика для такого простого приложения?
ng build --prod
Hash: 09a5f095e33b2980e7cc Time: 23455ms chunk {0} main.6273b0f04a07a1c2ad6c.bundle.js, main.6273b0f04a07a1c2ad6c.bundle.map(main) 18.3 kB {3} [initial] [rendered]
chunk {1} styles.bfdaa4d8a4eb2d0cb019.bundle.css, styles.bfdaa4d8a4eb2d0cb019.bundle.map, styles.bfdaa4d8a4eb2d0cb019.bundle.map(styles) 154 kB {4} [initial] [rendered]
chunk {2} scripts.c5b720a078e5464ec211.bundle.js, scripts.c5b720a078e5464ec211.bundle.map(scripts) 128 kB {4} [initial] [rendered]
chunk {3} vendor.07af2467307e17d85438.bundle.js, vendor.07af2467307e17d85438.bundle.map(vendor) 3.96 MB [initial] [rendered]
chunk {4} inline.a345391d459797f81820.bundle.js, inline.a345391d459797f81820.bundle.map(inline) 0 байт [вход] [Вынесено]
Подождите еще раз: такой же размер пакета поставщика для продукта?
ng build --prod --aot
Hash: 517e4425ff872bbe3e5b Time: 22856ms chunk {0} main.95eadabace554e3c2b43.bundle.js, main.95eadabace554e3c2b43.bundle.map(main) 130 kB {3} [initial] [rendered]
chunk {1} styles.e53a388ae1dd2b7f5434.bundle.css, styles.e53a388ae1dd2b7f5434.bundle.map, styles.e53a388ae1dd2b7f5434.bundle.map(styles) 154 kB {4} [initial] [rendered]
chunk {2} scripts.e5c2c90547f3168a7564.bundle.js, scripts.e5c2c90547f3168a7564.bundle.map(scripts) 128 kB {4} [initial] [rendered]
chunk {3} vendor.41a6c1f57136df286f14.bundle.js, vendor.41a6c1f57136df286f14.bundle.map(vendor) 2.75 MB [initial] [rendered]
chunk {4} inline.97c0403c57a46c6a7920.bundle.js, inline.97c0403c57a46c6a7920.bundle.map(inline) 0 байт [вход] [Вынесено]
ng build --aot
Hash: 040cc91df4df5ffc3c3f Time: 11011ms chunk {0} main.bundle.js, main.bundle.map(main) 130 kB {3} [initial] [rendered]
chunk {1} styles.bundle.css, styles.bundle.map, styles.bundle.map(styles) 155 kB {4} [initial] [rendered]
chunk {2} scripts.bundle.js, scripts.bundle.map(scripts) 128 kB {4} [initial] [rendered]
chunk {3} vendor.bundle.js, vendor.bundle.map(vendor) 2.75 MB [initial] [rendered]
chunk {4} inline.bundle.js, inline.bundle.map(inline) 0 bytes [entry] [rendered]
Итак, несколько вопросов по развертыванию моего приложения на Prod:
- Почему комплекты поставщиков такие огромные?
- Правильно ли используется встряхивание деревьев
angular-cli
? - Как улучшить размер пакета?
- Требуются ли файлы .map?
- Функции тестирования включены в пакеты? Я не нуждаюсь в них в продуктах.
- Общий вопрос: какие рекомендуемые инструменты для упаковки продуктов? Может быть,
angular-cli
(с использованием Webpack в фоновом режиме) не самый лучший вариант? Можем ли мы сделать лучше?
Я искал много дискуссий о Кару, но я не нашел ни одного общего вопроса.