Mam prostą aplikację, zainicjowaną przez angular-cli
.
Wyświetla niektóre strony odnoszące się do 3 tras. Mam 3 komponenty. Na jednym z tej strony używam lodash
i kątowa 2 moduły HTTP, aby uzyskać pewne dane (przy użyciu RxJS Observable
s, map
a subscribe
). Wyświetlam te elementy za pomocą prostego pliku *ngFor
.
Ale pomimo tego, że moja aplikacja jest naprawdę prosta, otrzymuję ogromny (moim zdaniem) pakiet i mapy. Nie mówię jednak o wersjach programu gzip, ale rozmiar przed zgzowaniem. To pytanie jest tylko pytaniem o ogólne zalecenia.
Niektóre wyniki testów:
ng build
Hash: 8efac7d6208adb8641c1 Czas: fragment 10129 ms {0} main.bundle.js, main.bundle.map (main) 18,7 kB {3} [początkowe] [wyrenderowane]
fragment {1} styles.bundle.css, styles.bundle.map, styles.bundle.map (styles) 155 kB {4} [początkowe] [renderowane]
fragment {2} scripts.bundle.js, scripts.bundle.map (skrypty) 128 kB {4} [początkowe] [wyrenderowane]
fragment {3} vendor.bundle.js, vendor.bundle.map (sprzedawca) 3,96 MB [początkowe] [wyrenderowane]
fragment {4} inline.bundle.js, inline.bundle.map (inline) 0 bajtów [wpis] [wyrenderowany]
Czekaj: pakiet 10Mb dostawcy dla tak prostej aplikacji?
ng build --prod
Hash: 09a5f095e33b2980e7cc Czas: fragment 23455ms {0} main.6273b0f04a07a1c2ad6c.bundle.js, main.6273b0f04a07a1c2ad6c.bundle.map (główny) 18,3 kB {3} [początkowe] [wyrenderowane]
chunk {1} styles.bfdaa4d8a4eb2d0cb019.bundle.css, styles.bfdaa4d8a4eb2d0cb019.bundle.map, styles.bfdaa4d8a4eb2d0cb019.bundle.map (styles) 154 kB {4} [początkowe] [wyrenderowane]
fragment {2} scripts.c5b720a078e5464ec211.bundle.js, scripts.c5b720a078e5464ec211.bundle.map (skrypty) 128 kB {4} [początkowe] [wyrenderowane]
fragment {3} vendor.07af2467307e17d85438.bundle.js, vendor.07af2467307e17d85438.bundle.map (dostawca) 3,96 MB [początkowe] [wyrenderowane]
fragment {4} inline.a345391d459797f81820.bundle.js, inline.a345391d459797f81820.bundle.map (inline) 0 bajtów [wpis] [wyrenderowany]
Poczekaj jeszcze raz: taki podobny rozmiar pakietu dostawcy dla prod?
ng build --prod --aot
Hash: 517e4425ff872bbe3e5b Czas: fragment 22856 ms {0} main.95eadabace554e3c2b43.bundle.js, main.95eadabace554e3c2b43.bundle.map (główny) 130 kB {3} [początkowe] [wyrenderowane]
chunk {1} styles.e53a388ae1dd2b7f5434.bundle.css, styles.e53a388ae1dd2b7f5434.bundle.map, styles.e53a388ae1dd2b7f5434.bundle.map (styles) 154 kB {4} [początkowe] [renderowane]
fragment {2} scripts.e5c2c90547f3168a7564.bundle.js, scripts.e5c2c90547f3168a7564.bundle.map (skrypty) 128 kB {4} [początkowe] [wyrenderowane]
fragment {3} vendor.41a6c1f57136df286f14.bundle.js, vendor.41a6c1f57136df286f14.bundle.map (sprzedawca) 2,75 MB [początkowe] [wyrenderowane]
fragment {4} inline.97c0403c57a46c6a7920.bundle.js, inline.97c0403c57a46c6a7920.bundle.map (inline) 0 bajtów [wpis] [wyrenderowany]
ng build --aot
Hash: 040cc91df4df5ffc3c3f Czas: fragment 11011 ms {0} main.bundle.js, main.bundle.map (main) 130 kB {3} [początkowe] [wyrenderowane]
fragment {1} styles.bundle.css, styles.bundle.map, styles.bundle.map (styles) 155 kB {4} [początkowe] [renderowane]
fragment {2} scripts.bundle.js, scripts.bundle.map (skrypty) 128 kB {4} [początkowe] [wyrenderowane]
fragment {3} vendor.bundle.js, vendor.bundle.map (sprzedawca) 2,75 MB [początkowe] [wyrenderowane]
fragment {4} inline.bundle.js, inline.bundle.map (inline) 0 bajtów [wpis] [wyrenderowany]
Oto kilka pytań dotyczących wdrażania mojej aplikacji w wersji prod:
- Dlaczego pakiety dostawców są tak ogromne?
- Czy trzęsące się drzewo jest właściwie używane przez
angular-cli
? - Jak zwiększyć rozmiar tego pakietu?
- Czy pliki .map są wymagane?
- Czy funkcje testowania są zawarte w pakietach? Nie potrzebuję ich w prod.
- Ogólne pytanie: jakie są zalecane narzędzia do pakowania? Może
angular-cli
(używanie Webpacka w tle) nie jest najlepszą opcją? Czy możemy zrobić lepiej?
Przeszukałem wiele dyskusji na temat przepełnienia stosu, ale nie znalazłem żadnego ogólnego pytania.