Ho una semplice app, inizializzata da angular-cli
.
Visualizza alcune pagine relative a 3 percorsi. Ho 3 componenti. In una di queste pagine utilizzo lodash
i moduli HTTP Angular 2 per ottenere alcuni dati (usando RxJS Observable
,map
e subscribe
). Visualizzo questi elementi usando un semplice *ngFor
.
Ma, nonostante la mia app sia davvero semplice, ottengo un pacchetto di pacchetti e mappe enormi (secondo me). Non parlo delle versioni di gzip ma delle dimensioni prima di gzipping. Questa domanda è solo una richiesta di raccomandazioni generali.
Alcuni risultati dei test:
costruire
Hash: 8efac7d6208adb8641c1 Tempo: 10129ms chunk {0} main.bundle.js, main.bundle.map (main) 18,7 kB {3} [iniziale] [reso]
chunk {1} styles.bundle.css, styles.bundle.map, styles.bundle.map (styles) 155 kB {4} [iniziale] [rendering]
chunk {2} scripts.bundle.js, scripts.bundle.map (script) 128 kB {4} [iniziale] [reso]
chunk {3} vendor.bundle.js, vendor.bundle.map (fornitore) 3.96 MB [iniziale] [rendering]
chunk {4} inline.bundle.js, inline.bundle.map (inline) 0 byte [entry] [rendering]
Aspetta: pacchetto bundle da 10 MB per un'app così semplice?
di build --prod
Hash: 09a5f095e33b2980e7cc Time: 23455ms chunk {0} main.6273b0f04a07a1c2ad6c.bundle.js, main.6273b0f04a07a1c2ad6c.bundle.map (main) 18.3 kB {3} [iniziale] [reso]
chunk {1} styles.bfdaa4d8a4eb2d0cb019.bundle.css, styles.bfdaa4d8a4eb2d0cb019.bundle.map, styles.bfdaa4d8a4eb2d0cb019.bundle.map (styles) 154 kB {4} [iniziale] [rendering]
chunk {2} scripts.c5b720a078e5464ec211.bundle.js, scripts.c5b720a078e5464ec211.bundle.map (script) 128 kB {4} [iniziale] [reso]
chunk {3} vendor.07af2467307e17d85438.bundle.js, vendor.07af2467307e17d85438.bundle.map (fornitore) 3.96 MB [iniziale] [rendering]
chunk {4} inline.a345391d459797f81820.bundle.js, inline.a345391d459797f81820.bundle.map (inline) 0 byte [entry] [reso]
Aspetta di nuovo: una dimensione del pacchetto del fornitore simile per prod?
ng build --prod --aot
Hash: 517e4425ff872bbe3e5b Tempo: pezzo 22856ms {0} main.95eadabace554e3c2b43.bundle.js, main.95eadabace554e3c2b43.bundle.map (main) 130 kB {3} [iniziale] [reso]
chunk {1} styles.e53a388ae1dd2b7f5434.bundle.css, styles.e53a388ae1dd2b7f5434.bundle.map, styles.e53a388ae1dd2b7f5434.bundle.map (stili) 154 kB {4} [iniziale] [reso]
chunk {2} scripts.e5c2c90547f3168a7564.bundle.js, scripts.e5c2c90547f3168a7564.bundle.map (script) 128 kB {4} [iniziale] [reso]
chunk {3} vendor.41a6c1f57136df286f14.bundle.js, vendor.41a6c1f57136df286f14.bundle.map (fornitore) 2,75 MB [iniziale] [reso]
chunk {4} inline.97c0403c57a46c6a7920.bundle.js, inline.97c0403c57a46c6a7920.bundle.map (inline) 0 byte [entry] [reso]
ng build --aot
Hash: 040cc91df4df5ffc3c3f Tempo: 11011ms chunk {0} main.bundle.js, main.bundle.map (main) 130 kB {3} [iniziale] [reso]
chunk {1} styles.bundle.css, styles.bundle.map, styles.bundle.map (styles) 155 kB {4} [iniziale] [rendering]
chunk {2} scripts.bundle.js, scripts.bundle.map (script) 128 kB {4} [iniziale] [reso]
chunk {3} vendor.bundle.js, vendor.bundle.map (fornitore) 2,75 MB [iniziale] [rendering]
chunk {4} inline.bundle.js, inline.bundle.map (inline) 0 byte [entry] [rendering]
Quindi alcune domande per distribuire la mia app su prod:
- Perché i pacchetti di fornitori sono così enormi?
- L'agitazione dell'albero è utilizzata correttamente
angular-cli
? - Come migliorare questa dimensione del pacchetto?
- I file .map sono richiesti?
- Le funzionalità di test sono incluse nei bundle? Non ho bisogno di loro in prod.
- Domanda generica: quali sono gli strumenti raccomandati per il confezionamento di prodotti? Forse
angular-cli
(utilizzando Webpack in background) non è l'opzione migliore? Possiamo fare di meglio?
Ho cercato molte discussioni su Stack Overflow, ma non ho trovato alcuna domanda generica.