Con angular 9 y su nuevo motor de compilación IVY, mis tiempos de compilación de CI han aumentado sustancialmente. Por supuesto, esto se debe a que ngcc se ejecuta en muchos módulos.
p.ej
Compiling @angular/core : es2015 as esm2015 Compiling @angular/common : es2015 as esm2015 ... Pensé que ngcc caché las bibliotecas compiladas en node_modules , pero mis node_modules están almacenados en caché en mi trabajo de CI y todavía se está compilando, por lo que no puede ser.
¿Qué ruta debo almacenar en caché para evitar volver a compilar todos los módulos con ngcc en cada compilación?
ACTUALIZACIÓN 1:
Los puntos de Ivy entry codificados de forma rígida se han eliminado de la compilación angular si está utilizando la última versión, anteriormente estaba wrongly hardcoded dentro Angular init TS github code link
Ahora/lo último que puedes hacer
ngcc --properties es2015 browser module main
Solo para versiones anteriores, consulte la Actualización 1 para versiones más nuevas
ngcc --properties es2015 browser module main --first-only --create-ivy-entry-points
O como parte de tu compilación dentro de package.json
{ "scripts": { "postinstall": "ngcc --properties es2015 browser module main --first-only --create-ivy-entry-points" } }
Algunos árbitros configuran a Travis para
# custom caching for .travis.yml install: - npm ci # keep the npm cache around to speed up installs cache: directories: - "$HOME/.npm" # you can add otherOpción 2: Mucho más rápido con yarn o pnpm
pnpm install // or yarn install // or npm install --prefer-offline --no-auditConserve package-lock.json y la carpeta node_modules/ entre cada ejecución. Espero que NO esté ejecutando una imagen nueva cada vez.
Si se actualizan package.json o package-lock.json en la próxima compilación de CI, solo se preprocesarán e instalarán los actualizados. Otros no se instalarán una y otra vez.
Hay varias pautas de lo que se debe y no se debe hacer con respecto a la carpeta package-lock.json y node_modules. Encontrarás mucho para leer al respecto en Internet y no me voy a involucrar.
Regla del pulgar: mantenga
package-lock.jsonynode_modulesjuntos
Básicamente, se instala un paquete (mencionado en package.json) si
En resumen, no puedes hacer eso. La versión actual de ngcc no busca ningún cambio y siempre vuelve a compilar todos los paquetes al llamar al comando ngcc. Este caso se puede resolver en el futuro con el enlazador angular , pero no es seguro, seguro que mejorará los tiempos de compilación.