J'ai une application simple, initialisée par angular-cli
.
Il affiche quelques pages relatives à 3 itinéraires. J'ai 3 composants. Sur l'une de cette page, j'utilise lodash
et des modules HTTP Angular 2 pour obtenir des données (en utilisant RxJS Observable
, map
et subscribe
). J'affiche ces éléments en utilisant un simple *ngFor
.
Mais, malgré le fait que mon application soit vraiment simple, j'obtiens un énorme package (à mon avis) et des cartes. Je ne parle pas des versions gzip mais de la taille avant gzipping. Cette question n'est qu'une enquête de recommandations générales.
Quelques résultats de tests:
ng build
Hash: 8efac7d6208adb8641c1 Durée: bloc de 10129 ms {0} main.bundle.js, main.bundle.map (main) 18,7 Ko {3} [initial] [rendu]
bloc {1} styles.bundle.css, styles.bundle.map, styles.bundle.map (styles) 155 Ko {4} [initial] [rendu]
chunk {2} scripts.bundle.js, scripts.bundle.map (scripts) 128 Ko {4} [initial] [rendu]
bloc {3} vendor.bundle.js, vendor.bundle.map (fournisseur) 3,96 Mo [initial] [rendu]
bloc {4} inline.bundle.js, inline.bundle.map (inline) 0 octets [entrée] [rendu]
Attendez: un package de 10 Mo pour une application aussi simple?
ng build --prod
Hash: 09a5f095e33b2980e7cc Durée: 23455 ms bloc {0} main.6273b0f04a07a1c2ad6c.bundle.js, main.6273b0f04a07a1c2ad6c.bundle.map (main) 18,3 ko {3} [initial] [rendu]
bloc {1} styles.bfdaa4d8a4eb2d0cb019.bundle.css, styles.bfdaa4d8a4eb2d0cb019.bundle.map, styles.bfdaa4d8a4eb2d0cb019.bundle.map (styles) 154 Ko {4} [initial] [rendu]
bloc {2} scripts.c5b720a078e5464ec211.bundle.js, scripts.c5b720a078e5464ec211.bundle.map (scripts) 128 Ko {4} [initial] [rendu]
bloc {3} vendor.07af2467307e17d85438.bundle.js, vendor.07af2467307e17d85438.bundle.map (fournisseur) 3,96 Mo [initial] [rendu]
bloc {4} inline.a345391d459797f81820.bundle.js, inline.a345391d459797f81820.bundle.map (inline) 0 octets [entrée] [rendu]
Attendez à nouveau: une telle taille de bundle de fournisseur similaire pour prod?
ng build --prod --aot
Hash: 517e4425ff872bbe3e5b Durée: bloc de 22856 ms {0} main.95eadabace554e3c2b43.bundle.js, main.95eadabace554e3c2b43.bundle.map (main) 130 ko {3} [initial] [rendu]
bloc {1} styles.e53a388ae1dd2b7f5434.bundle.css, styles.e53a388ae1dd2b7f5434.bundle.map, styles.e53a388ae1dd2b7f5434.bundle.map (styles) 154 Ko {4} [initial] [rendu]
bloc {2} scripts.e5c2c90547f3168a7564.bundle.js, scripts.e5c2c90547f3168a7564.bundle.map (scripts) 128 Ko {4} [initial] [rendu]
bloc {3} vendor.41a6c1f57136df286f14.bundle.js, vendor.41a6c1f57136df286f14.bundle.map (fournisseur) 2,75 Mo [initial] [rendu]
bloc {4} inline.97c0403c57a46c6a7920.bundle.js, inline.97c0403c57a46c6a7920.bundle.map (inline) 0 octets [entrée] [rendu]
ng build --aot
Hash: 040cc91df4df5ffc3c3f Durée: bloc de 11011 ms {0} main.bundle.js, main.bundle.map (main) 130 Ko {3} [initial] [rendu]
bloc {1} styles.bundle.css, styles.bundle.map, styles.bundle.map (styles) 155 Ko {4} [initial] [rendu]
chunk {2} scripts.bundle.js, scripts.bundle.map (scripts) 128 Ko {4} [initial] [rendu]
bloc {3} vendor.bundle.js, vendor.bundle.map (fournisseur) 2,75 Mo [initial] [rendu]
bloc {4} inline.bundle.js, inline.bundle.map (inline) 0 octets [entrée] [rendu]
Donc quelques questions pour déployer mon application sur prod:
- Pourquoi les offres groupées des fournisseurs sont-elles si importantes?
- L'arbre secoue-t-il correctement
angular-cli
? - Comment améliorer cette taille de bundle?
- Les fichiers .map sont-ils requis?
- Les fonctionnalités de test sont-elles incluses dans les bundles? Je n'en ai pas besoin en prod.
- Question générique: quels sont les outils recommandés à emballer pour produire? Peut-être que
angular-cli
(utiliser Webpack en arrière-plan) n'est pas la meilleure option? Pouvons-nous faire mieux?
J'ai recherché de nombreuses discussions sur Stack Overflow, mais je n'ai trouvé aucune question générique.