Ich habe eine einfache App, initialisiert von angular-cli
.
Es werden einige Seiten in Bezug auf 3 Routen angezeigt. Ich habe 3 Komponenten. Auf einer Seite springt Nutzung lodash
und Angular 2 HTTP - Module einige Daten (mit RxJS bekommen Observable
s, map
und subscribe
). Ich zeige diese Elemente mit einem einfachen *ngFor
.
Aber trotz der Tatsache, dass meine App wirklich einfach ist, bekomme ich ein riesiges (meiner Meinung nach) Bundle-Paket und Karten. Ich spreche allerdings nicht über gzip-Versionen, sondern über die Größe vor dem gzipping. Diese Frage ist nur eine allgemeine Empfehlung.
Einige Testergebnisse:
ng bauen
Hash: 8efac7d6208adb8641c1 Zeit: 10129 ms Chunk {0} main.bundle.js, main.bundle.map (main) 18,7 kB {3} [initial] [gerendert]
chunk {1} styles.bundle.css, styles.bundle.map, styles.bundle.map (styles) 155 kB {4} [initial] [gerendert]
chunk {2} scripts.bundle.js, scripts.bundle.map (scripts) 128 kB {4} [initial] [gerendert]
chunk {3} vendor.bundle.js, vendor.bundle.map (Anbieter) 3,96 MB [initial] [gerendert]
chunk {4} inline.bundle.js, inline.bundle.map (inline) 0 Bytes [Eintrag] [gerendert]
Warten Sie: 10 MB Vendor Bundle-Paket für eine so einfache App?
ng build --prod
Hash: 09a5f095e33b2980e7cc Zeit: 23455 ms Chunk {0} main.6273b0f04a07a1c2ad6c.bundle.js, main.6273b0f04a07a1c2ad6c.bundle.map (main) 18,3 kB {3} [initial] [gerendert]
chunk {1} styles.bfdaa4d8a4eb2d0cb019.bundle.css, styles.bfdaa4d8a4eb2d0cb019.bundle.map, styles.bfdaa4d8a4eb2d0cb019.bundle.map (styles) 154 kB {4} [initial] [gerendert]
chunk {2} scripts.c5b720a078e5464ec211.bundle.js, scripts.c5b720a078e5464ec211.bundle.map (scripts) 128 kB {4} [initial] [gerendert]
chunk {3} vendor.07af2467307e17d85438.bundle.js, vendor.07af2467307e17d85438.bundle.map (vendor) 3.96 MB [initial] [gerendert]
chunk {4} inline.a345391d459797f81820.bundle.js, inline.a345391d459797f81820.bundle.map (inline) 0 Bytes [Eintrag] [gerendert]
Warten Sie noch einmal: So eine ähnliche Vendor-Bundle-Größe für Prod?
ng build --prod --aot
Hash: 517e4425ff872bbe3e5b Zeit: 22856 ms Chunk {0} main.95eadabace554e3c2b43.bundle.js, main.95eadabace554e3c2b43.bundle.map (main) 130 kB {3} [initial] [gerendert]
chunk {1} styles.e53a388ae1dd2b7f5434.bundle.css, styles.e53a388ae1dd2b7f5434.bundle.map, styles.e53a388ae1dd2b7f5434.bundle.map (styles) 154 kB {4} [initial] [gerendert]
chunk {2} scripts.e5c2c90547f3168a7564.bundle.js, scripts.e5c2c90547f3168a7564.bundle.map (scripts) 128 kB {4} [initial] [gerendert]
chunk {3} vendor.41a6c1f57136df286f14.bundle.js, vendor.41a6c1f57136df286f14.bundle.map (vendor) 2.75 MB [initial] [gerendert]
chunk {4} inline.97c0403c57a46c6a7920.bundle.js, inline.97c0403c57a46c6a7920.bundle.map (inline) 0 Bytes [Eintrag] [gerendert]
ng build --aot
Hash: 040cc91df4df5ffc3c3f Zeit: 11011 ms Chunk {0} main.bundle.js, main.bundle.map (main) 130 kB {3} [initial] [gerendert]
chunk {1} styles.bundle.css, styles.bundle.map, styles.bundle.map (styles) 155 kB {4} [initial] [gerendert]
chunk {2} scripts.bundle.js, scripts.bundle.map (scripts) 128 kB {4} [initial] [gerendert]
chunk {3} vendor.bundle.js, vendor.bundle.map (Anbieter) 2,75 MB [initial] [gerendert]
chunk {4} inline.bundle.js, inline.bundle.map (inline) 0 Bytes [Eintrag] [gerendert]
Also ein paar Fragen zum Bereitstellen meiner App auf prod:
- Warum sind die Anbieterpakete so groß?
- Wird Baumschütteln von richtig eingesetzt
angular-cli
? - Wie kann diese Bundle-Größe verbessert werden?
- Sind die .map-Dateien erforderlich?
- Sind die Testfunktionen in Bundles enthalten? Ich brauche sie nicht in Prod.
- Allgemeine Frage: Was sind die empfohlenen Tools zum Packen für Produkte? Vielleicht
angular-cli
(mit Webpack im Hintergrund) ist nicht die beste Option? Können wir es besser machen?
Ich habe viele Diskussionen zu Stack Overflow durchsucht, aber keine allgemeine Frage gefunden.