Otimização de bundle com webpack #1605
Replies: 9 comments
-
É angular né? Eu tenho a impressão que o vendor de produção do angular um tanto menor, o de dev que é exagerado. Além do feijão-com-arroz (montar o gráfico de tamanho e analizar caso a caso), uma idéia seria fuçar no que pacotes de build (como o CRA ou o TSDX) estão fazendo, às vezes se acha algo. O TSDX, por exemplo tinha uma parada de marcar as funções como imutáveis pra aumentar a quantidade de libs afetadas pelo tree-shaking... |
Beta Was this translation helpful? Give feedback.
-
@mikaelhadler Indico demais que use a lib webpack-bundle-analyzer para analisar quais coisas estão pesando. Se estiver usando Angular recomendo que faça lazy loading das suas coisas, deixando apenas as coisas necessárias para carregamento inicial no bundle principal. Faz toda diferença com relação a performance. |
Beta Was this translation helpful? Give feedback.
-
Pior que não, é react :|, vou dar uma sacada nesses repositórios para entender mais esta parte do tree-shaking, talvez seja por isso que ta dando tanto impacto. |
Beta Was this translation helpful? Give feedback.
-
@felipefialho foi exatamente ele que utilizei pra analisar o que estava pesando, valeu a dica = ) |
Beta Was this translation helpful? Give feedback.
-
Tentou usar o que a documentação fala sobre Como uma dica pessoal eu sempre tento evitar agregar módulos em named exports, sempre tento chamar direto arquivos com export default, ou se há named exports, fazer dum jeito que ao pedir banana não venha macaco e a floresta toda. O tree-shaking/dead code elimination não é coisa nativa do webpack e não confio muito no mangler do uglify/terser. Mas entendo que agora o projeto já deve ter crescido desorganizadamente (pra ultrapassar 8mb de prod). Creio que uma otimização que sugeriria seria tentar criar dynamic imports e dividir o teu código em módulos "code |
Beta Was this translation helpful? Give feedback.
-
Seta "antd" é bem grande também. Você pode consultar o peso das bibliotecas e se elas são tree-shakeable usando o BundlePhobia. Se você estiver usando alguma lib de internacionalização como Moment, é possível que ela tenha incluído as data files de todas as linguagens disponíveis. Os source maps estão inline no arquivo? Compartilha a configuração do Babel também, apesar de que, em 90%+ dos casos, não é necessário transformar vendor files com Babel. 8.2MB é realmente muita coisa. Eu trabalho num projeto gigante e a vendor file pesa 4.8MB em desenvolvimento e 896KB em produção. Com GZIP, caem para 925KB e 218KB, respectivamente. Roda o webpack-bundle-analyzer e compartilha o JSON com a gente. |
Beta Was this translation helpful? Give feedback.
-
@ninetails Desculpe se não fui claro, essas métricas obtidas foram do tamanho em desenvolvimento pessoal. Alguns dados referentes a este estudo: Reduce bundle size:
Final bundle - File sizes after gzip:
|
Beta Was this translation helpful? Give feedback.
-
@mikaelhadler aí você tem que ajudar a gente. Que estudo? Quais configurações você alterou? Os resultados parecem razoáveis agora pra você? |
Beta Was this translation helpful? Give feedback.
-
@mikaelhadler de acordo, explica melhor pra podermos ajudar mais pontualmente. O que eu falaria é que o code-splitting é uma otimização que ajuda em relação a evitar baixar código desnecessário:
|
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Fala pessoal, tudo bem ?
Hoje vim humildemente pedir umas dicas de otimização de bundles com webpack.
O que vocês fazem para melhorar a compressão dos vendors ?
Vocês constumam separar o seu vendors em diversos chunks ?
O que já estou fazendo ?
Ex: import { Card } from 'antd'
O que ainda não consegui ?
To lendo um pouco sobre a separação destes vendors, mas ainda não ta muito claro se terei um tanto ganho.
Beta Was this translation helpful? Give feedback.
All reactions