Cette page a été traduite par PageTurner AI (bêta). Non approuvée officiellement par le projet. Vous avez trouvé une erreur ? Signaler un problème →
Mise en cache des résultats de tâches
Pour l'exécution de tâches, la mise en cache, etc., Lerna et Nx sont interchangeables. Lorsque nous disons "Lerna peut mettre en cache les builds", cela signifie que Lerna utilise Nx qui peut mettre en cache les builds.
Reconstruire et retester plusieurs fois le même code est coûteux. Lerna utilise un cache de calcul pour ne jamais reconstruire le même code deux fois.
Configuration
Lerna via Nx dispose du système de mise en cache de calcul le plus sophistiqué et éprouvé. Il sait quand la tâche que vous vous apprêtez à exécuter a déjà été traitée, ce qui lui permet d'utiliser le cache pour restaurer les résultats précédents.
Si vous n'avez pas de fichier nx.json, exécutez npx lerna add-caching.
Pour activer la mise en cache pour build et test, modifiez la propriété targetDefaults dans nx.json pour inclure les tâches build et test :
{
"targetDefaults": {
"build": {
"cache": true
},
"test": {
"cache": true
}
}
}
Notez que les opérations cachables doivent être sans effet de bord, c'est-à-dire qu'avec les mêmes entrées, elles doivent toujours produire les mêmes sorties. Par exemple, les tests e2e qui accèdent à une API backend ne peuvent pas être cachés car le backend pourrait influencer le résultat des tests.
Exécutez maintenant la commande suivante deux fois. La deuxième exécution sera instantanée :
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.
Rejouer à partir du cache
Quand Lerna détermine que les entrées d'une tâche n'ont pas changé, il recrée les sorties comme si la tâche avait été exécutée sur votre machine - mais bien plus rapidement. Les sorties d'une tâche cachée incluent à la fois le terminal et les fichiers créés dans les répertoires output définis.
Vous pouvez tester cela en supprimant le dossier dist généré par header:build, puis en réexécutant lerna run build --scope=header. La tâche cachée se rejouera instantanément et les fichiers corrects seront présents dans le dossier dist.
header/
└── dist/ <-- this folder gets recreated
Si votre tâche produit des artefacts ailleurs, vous pouvez modifier les dossiers de sortie qui sont cachés. Vous pouvez aussi personnaliser les entrées qui invalideront le cache si elles changent.
Mise en cache avancée
Pour approfondir le fonctionnement du cache et l'ajuster finement pour votre dépôt, consultez Fonctionnement du cache.
Mise en cache locale des calculs
Par défaut, Lerna (via Nx) utilise un cache de calcul local. Nx conserve les valeurs cachées seulement une semaine avant de les
supprimer. Pour effacer le cache, exécutez nx reset ; Nx en créera un nouveau à sa prochaine tentative d'accès.