Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →
Almacenar en caché los resultados de tareas
En cuanto a ejecución de tareas, almacenamiento en caché, etc., Lerna y Nx son intercambiables. Cuando decimos "Lerna puede almacenar builds en caché", queremos decir que Lerna usa Nx que sí puede almacenar builds en caché.
Reconstruir y volver a probar el mismo código repetidamente es costoso. Lerna utiliza una caché de computación para evitar reconstruir el mismo código dos veces.
Configuración
Lerna a través de Nx posee el sistema de caché de computación más sofisticado y probado en batalla. Sabe cuándo una tarea que vas a ejecutar ya se ha realizado antes, por lo que puede usar la caché para restaurar los resultados.
Si no tienes nx.json, ejecuta npx lerna add-caching.
Para habilitar el almacenamiento en caché para build y test, edita la propiedad targetDefaults en nx.json para incluir las tareas build y test:
{
"targetDefaults": {
"build": {
"cache": true
},
"test": {
"cache": true
}
}
}
Nota: las operaciones almacenables en caché deben estar libres de efectos secundarios, es decir, con la misma entrada siempre deben producir la misma salida. Por ejemplo, las pruebas e2e que consumen una API backend no pueden almacenarse en caché porque el backend podría influir en el resultado.
Ahora ejecuta el siguiente comando dos veces. La segunda vez la operación será instantánea:
lerna run build --scope=header
> lerna run build --scope=header
> header:build [existing outputs match the cache, left as is]
> header@0.0.0 build
> rimraf dist && rollup --config
src/index.tsx → dist...
created dist in 858ms
————————————— ————————————————————————————————————————————————————————————————————————————————————————————————————————————
Lerna (powered by Nx) Successfully ran target test for project header (4ms)
Nx read the output from the cache instead of running the command for 1 out of 1 tasks.
Reproducción desde la caché
Cuando Lerna determina que las entradas de una tarea no han cambiado, recrea sus salidas como si se hubiera ejecutado en tu máquina, pero mucho más rápido. Las salidas incluyen tanto la terminal como los archivos creados en los directorios de output definidos.
Puedes probar esto eliminando la carpeta dist que genera header:build y luego ejecutando lerna run build --scope=header nuevamente. La tarea en caché se reproducirá al instante y los archivos correctos aparecerán en dist.
header/
└── dist/ <-- this folder gets recreated
Si tu tarea genera artefactos en otra ubicación, puedes cambiar las carpetas de salida que se almacenan en caché. También puedes personalizar qué entradas invalidan la caché si cambian.
Almacenamiento en caché avanzado
Para profundizar en la implementación y ajustar el almacenamiento en caché en tu repositorio, lee Cómo funciona el almacenamiento en caché.
Almacenamiento en caché local
Por defecto, Lerna (vía Nx) usa una caché de computación local. Nx almacena los valores en caché solo por una semana antes de eliminarlos. Para limpiar la caché ejecuta nx reset, y Nx creará una nueva la próxima vez que intente acceder.