Tengo una aplicación simple, inicializada por angular-cli
.
Muestra algunas páginas relativas a 3 rutas. Tengo 3 componentes. En una de esta página uso lodash
módulos Angular 2 HTTP para obtener algunos datos (usando RxJS Observable
s, map
y subscribe
). Muestro estos elementos usando un simple *ngFor
.
Pero, a pesar del hecho de que mi aplicación es realmente simple, obtengo un gran paquete de paquetes (en mi opinión) y mapas. Sin embargo, no hablo de las versiones de gzip, sino del tamaño antes de gzipping. Esta pregunta es solo una consulta de recomendaciones generales.
Resultados de algunas pruebas:
ng build
Hash: 8efac7d6208adb8641c1 Tiempo: 10129ms trozo {0} main.bundle.js, main.bundle.map (main) 18.7 kB {3} [inicial] [prestados]
trozo {1} styles.bundle.css, styles.bundle.map, styles.bundle.map (styles) 155 kB {4} [inicial] [prestados]
fragmento {2} scripts.bundle.js, scripts.bundle.map (scripts) 128 kB {4} [inicial] [prestados]
trozo {3} vendor.bundle.js, vendor.bundle.map (vendedor) 3.96 MB [inicial] [prestados]
trozo {4} inline.bundle.js, inline.bundle.map (en línea) 0 bytes [entrada] [prestados]
Espere: ¿ Paquete de paquete de proveedor de 10Mb para una aplicación tan simple?
ng build --prod
Hash: 09a5f095e33b2980e7cc Tiempo: 23455ms fragmento {0} main.6273b0f04a07a1c2ad6c.bundle.js, main.6273b0f04a07a1c2ad6c.bundle.map (main) 18.3 kB {3} [inicial] [prescrito]
fragmento {1} styles.bfdaa4d8a4eb2d0cb019.bundle.css, styles.bfdaa4d8a4eb2d0cb019.bundle.map, styles.bfdaa4d8a4eb2d0cb019.bundle.map (estilos) 154 kB {]} [presentado] [inicial]
trozo {2} scripts.c5b720a078e5464ec211.bundle.js, scripts.c5b720a078e5464ec211.bundle.map (scripts) 128 kB {4} [inicial] [procesado]
trozo {3} vendor.07af2467307e17d85438.bundle.js, vendor.07af2467307e17d85438.bundle.map (vendedor) 3.96 MB [inicial] [procesado]
trozo {4} inline.a345391d459797f81820.bundle.js, inline.a345391d459797f81820.bundle.map (en línea) 0 bytes [entrada] [prestados]
Espere de nuevo: ¿ un tamaño de paquete de proveedor similar para prod?
ng build --prod --aot
Hash: 517e4425ff872bbe3e5b Tiempo: 22856 ms fragmento {0} main.95eadabace554e3c2b43.bundle.js, main.95eadabace554e3c2b43.bundle.map (main) 130 kB {3} [inicial] [prestados]
trozo {1} styles.e53a388ae1dd2b7f5434.bundle.css, styles.e53a388ae1dd2b7f5434.bundle.map, styles.e53a388ae1dd2b7f5434.bundle.map (estilos) 154 kB {4} [inicial] [prestados]
trozo {2} scripts.e5c2c90547f3168a7564.bundle.js, scripts.e5c2c90547f3168a7564.bundle.map (scripts) 128 kB {4} [inicial] [procesado]
fragmento {3} vendor.41a6c1f57136df286f14.bundle.js, vendor.41a6c1f57136df286f14.bundle.map (vendedor) 2.75 MB [inicial] [procesado]
trozo {4} en línea.97c0403c57a46c6a7920.bundle.js, en línea.97c0403c57a46c6a7920.bundle.map (en línea) 0 bytes [entrada] [prestados]
ng build --aot
Hash: 040cc91df4df5ffc3c3f Tiempo: 11011ms trozo {0} main.bundle.js, main.bundle.map (main) 130 kB {3} [inicial] [procesado]
trozo {1} styles.bundle.css, styles.bundle.map, styles.bundle.map (styles) 155 kB {4} [inicial] [prestados]
fragmento {2} scripts.bundle.js, scripts.bundle.map (scripts) 128 kB {4} [inicial] [prestados]
trozo {3} vendor.bundle.js, vendor.bundle.map (vendedor) 2.75 MB [inicial] [prestados]
trozo {4} inline.bundle.js, inline.bundle.map (en línea) 0 bytes [entrada] [prestados]
Entonces, algunas preguntas para implementar mi aplicación en prod:
- ¿Por qué los paquetes de proveedores son tan grandes?
- ¿Se usa correctamente la sacudida de los árboles
angular-cli
? - ¿Cómo mejorar este tamaño de paquete?
- ¿Se requieren los archivos .map?
- ¿Las características de prueba están incluidas en paquetes? No los necesito en productos.
- Pregunta genérica: ¿cuáles son las herramientas recomendadas para empacar para productos? ¿Quizás
angular-cli
(usar Webpack en segundo plano) no sea la mejor opción? ¿Podemos hacerlo mejor?
Busqué muchas discusiones sobre Stack Overflow, pero no encontré ninguna pregunta genérica.