Aller au contenu principal
Traduction Bêta Non Officielle

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.

astuce

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 :

nx.json
{
"targetDefaults": {
"build": {
"cache": true
},
"test": {
"cache": true
}
}
}
info

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
Terminal Output
> 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.