Eu tenho um aplicativo simples, inicializado por angular-cli
.
Ele exibe algumas páginas relativas a 3 rotas. Eu tenho 3 componentes. Em um dos desta página Eu uso lodash
e angular 2 HTTP módulos para obter alguns dados (usando RxJS Observable
s, map
e subscribe
). Eu exibo esses elementos usando um simples *ngFor
.
Mas, apesar do fato de meu aplicativo ser realmente simples, recebo um pacote e mapas enormes (na minha opinião). Eu não falo sobre versões do gzip, mas do tamanho antes do gzip. Esta pergunta é apenas uma consulta de recomendações gerais.
Alguns resultados de testes:
ng build
Hash: 8efac7d6208adb8641c1 Tempo: 10129ms chunk {0} main.bundle.js, main.bundle.map (main) 18,7 kB {3} [inicial] [renderizado]
pedaço {1} styles.bundle.css, styles.bundle.map, styles.bundle.map (estilos) 155 kB {4} [inicial] [renderizado]
pedaço {2} scripts.bundle.js, scripts.bundle.map (scripts) 128 kB {4} [inicial] [renderizado]
pedaço {3} vendor.bundle.js, vendor.bundle.map (fornecedor) 3,96 MB [inicial] [renderizado]
pedaço {4} inline.bundle.js, inline.bundle.map (inline) 0 bytes [entrada] [renderizado]
Espere: pacote de 10Mb de fornecedor para um aplicativo tão simples?
ng build --prod
Hash: 09a5f095e33b2980e7cc Tempo: 23455ms chunk {0} main.6273b0f04a07a1c2ad6c.bundle.js, main.6273b0f04a07a1c2ad6c.bundle.map (principal) 18,3 kB {3} [inicial] [processado]
pedaço {1} styles.bfdaa4d8a4eb2d0cb019.bundle.css, styles.bfdaa4d8a4eb2d0cb019.bundle.map, styles.bfdaa4d8a4eb2d0cb019.bundle.map (estilos) 154 kB {4} [inicial] [renderizado]
chunk {2} scripts.c5b720a078e5464ec211.bundle.js, scripts.c5b720a078e5464ec211.bundle.map (scripts) 128 kB {4} [inicial] [renderizado]
chunk {3} vendor.07af2467307e17d85438.bundle.js, vendor.07af2467307e17d85438.bundle.map (fornecedor) 3,96 MB [inicial] [renderizado]
pedaço {4} inline.a345391d459797f81820.bundle.js, inline.a345391d459797f81820.bundle.map (inline) 0 bytes [entrada] [renderizado]
Aguarde novamente: tamanho de pacote de fornecedor semelhante para o prod?
ng build --prod --aot
Hash: 517e4425ff872bbe3e5b Tempo: 22856ms chunk {0} main.95eadabace554e3c2b43.bundle.js, main.95eadabace554e3c2b43.bundle.map (principal) 130 kB {3} [inicial] [renderizado]
pedaço {1} styles.e53a388ae1dd2b7f5434.bundle.css, styles.e53a388ae1dd2b7f5434.bundle.map, styles.e53a388ae1dd2b7f5434.bundle.map (estilos) 154 kB {4} [inicial] [renderizado]
chunk {2} scripts.e5c2c90547f3168a7564.bundle.js, scripts.e5c2c90547f3168a7564.bundle.map (scripts) 128 kB {4} [inicial] [renderizado]
chunk {3} vendor.41a6c1f57136df286f14.bundle.js, vendor.41a6c1f57136df286f14.bundle.map (fornecedor) 2,75 MB [inicial] [renderizado]
chunk {4} inline.97c0403c57a46c6a7920.bundle.js, inline.97c0403c57a46c6a7920.bundle.map (inline) 0 bytes [entrada] [renderizado]
ng build --aot
Hash: 040cc91df4df5ffc3c3f Tempo: 11011ms chunk {0} main.bundle.js, main.bundle.map (principal) 130 kB {3} [inicial] [renderizado]
pedaço {1} styles.bundle.css, styles.bundle.map, styles.bundle.map (estilos) 155 kB {4} [inicial] [renderizado]
pedaço {2} scripts.bundle.js, scripts.bundle.map (scripts) 128 kB {4} [inicial] [renderizado]
pedaço {3} vendor.bundle.js, vendor.bundle.map (fornecedor) 2,75 MB [inicial] [renderizado]
pedaço {4} inline.bundle.js, inline.bundle.map (inline) 0 bytes [entrada] [renderizado]
Então, algumas perguntas para implantar meu aplicativo no prod:
- Por que os pacotes de fornecedores são tão grandes?
- A agitação das árvores é usada corretamente
angular-cli
? - Como melhorar esse tamanho de pacote?
- Os arquivos .map são necessários?
- Os recursos de teste estão incluídos nos pacotes configuráveis? Eu não preciso deles em prod.
- Pergunta genérica: quais são as ferramentas recomendadas para empacotar para prod? Talvez
angular-cli
(usando o Webpack em segundo plano) não seja a melhor opção? Podemos fazer melhor?
Pesquisei muitas discussões sobre o Stack Overflow, mas não encontrei nenhuma pergunta genérica.