Questa pagina è stata tradotta da PageTurner AI (beta). Non ufficialmente approvata dal progetto. Hai trovato un errore? Segnala problema →
Memorizzazione dei risultati delle attività
Per quanto riguarda l'esecuzione di attività, la memorizzazione nella cache, ecc., Lerna e Nx sono intercambiabili. Quando diciamo "Lerna può memorizzare le build", intendiamo che Lerna utilizza Nx che a sua volta può memorizzare le build.
Ricompilare e ritestare ripetutamente lo stesso codice è costoso. Lerna utilizza una cache computazionale per evitare di ricostruire lo stesso codice più di una volta.
Configurazione
Lerna, tramite Nx, dispone del sistema di memorizzazione computazionale più sofisticato e collaudato. Riconosce quando l'attività che stai per eseguire è già stata elaborata precedentemente, consentendo di ripristinare i risultati direttamente dalla cache.
Se non disponi del file nx.json, esegui npx lerna add-caching.
Per abilitare la memorizzazione per build e test, modifica la proprietà targetDefaults in nx.json includendo le attività build e test:
{
"targetDefaults": {
"build": {
"cache": true
},
"test": {
"cache": true
}
}
}
Nota: le operazioni memorizzabili devono essere prive di effetti collaterali, ovvero a parità di input devono sempre produrre lo stesso output. Ad esempio, test end-to-end che interagiscono con API di backend non possono essere memorizzati poiché il backend potrebbe influenzare l'esito del test.
Ora esegui il comando seguente due volte. La seconda esecuzione sarà immediata:
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.
Riproduzione dalla cache
Quando Lerna rileva che gli input di un'attività non sono cambiati, ricrea gli output come se l'attività fosse effettivamente in esecuzione sulla tua macchina, ma molto più velocemente. Gli output di un'attività memorizzata includono sia il risultato terminale che i file creati nelle directory output definite per quell'attività.
Puoi verificarlo eliminando la cartella dist generata dall'attività header:build e rieseguendo lerna run build --scope=header. L'attività memorizzata verrà riprodotta istantaneamente e i file corretti saranno nuovamente presenti nella cartella dist.
header/
└── dist/ <-- this folder gets recreated
Se la tua attività genera artefatti in posizioni diverse, puoi modificare le cartelle di output soggette a memorizzazione. Puoi anche personalizzare quali input invalidano la cache quando modificati.
Memorizzazione avanzata
Per una comprensione approfondita dell'implementazione e per ottimizzare la memorizzazione nel tuo repository, consulta Come funziona la memorizzazione.
Memorizzazione computazionale locale
Per impostazione predefinita, Lerna (tramite Nx) utilizza una cache computazionale locale. Nx conserva i valori memorizzati solo per una settimana, dopodiché
vengono eliminati. Per cancellare la cache esegui nx reset: Nx ne creerà una nuova al successivo tentativo di accesso.