Acabei de atualizar meu projeto para o Angular 9 e a primeira coisa que notei é que o tempo de compilação aumentou significativamente no meu IC (de 2 minutos para 4 minutos).
Analisando os logs, toda vez que os testes ou a compilação são executados, a CLI realiza uma pré-compilação. Isso se deve à nova arquitetura Ivy , mas pelo meu entendimento, essa compilação deve acontecer apenas com códigos que não são compatíveis com Ivy.
Então, por que estou vendo muitos Compiling @angular/common : es2015 as esm2015
(principalmente dos pacotes @angular) na minha compilação? O próprio código Angular não deve ser compatível com Ivy?
Nota: Isso também acontece com um projeto novo (apenas com poucas bibliotecas).
Atualização Isso acontece com todos os comandos que requerem uma compilação. Ex:
ng test --code-coverage=true --watch=false --browsers=ChromeHeadle
ng b -c=staging --aot
Atualização 2
Estou adicionando minhas compilações para comparação: migração pré-angular 9 e após angular 9 (a compilação ainda está falhando, mas podemos usar o teste de unidade como referência, de ~ 2 minutos a ~ 4 minutos de execução total)
fonte
Respostas:
Este artigo explica por que o Angular 9 compila dependências com o ngcc e o roteiro de compilação do Ivy.
Em resumo, como o conjunto de instruções do Ivy será estabilizado apenas no Angular 10, a equipe do Angular recomenda ainda não publicar pacotes compilados no Angular 9 Ivy. Após o Angular 10, os mantenedores de pacotes serão incentivados a publicar pacotes Ivy; Os pacotes do View Engine ainda serão suportados, mas não incentivados.
A partir disso, concluo algum tempo após o lançamento do Angular 10, veremos significativamente menos compilação ngcc acontecendo, em alguns casos nenhuma, dependendo dos pacotes usados por um projeto em particular. No Angular 9, a etapa de compilação ngcc é um compromisso necessário do qual você terá dificuldade em se livrar.
Quanto à velocidade do IC, os documentos oficiais sugerem que o ngcc pode ser executado explicitamente. Acho que pode ser possível armazenar em cache esta etapa no IC, mas, por não estar ciente de sua configuração específica, não posso sugerir nada além da direção da pesquisa.
Atualização: O Angular 9.1 promete melhorias na velocidade de construção do ngcc.
fonte