Vai al contenuto principale
Traduzione Beta Non Ufficiale

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.

consiglio

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:

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

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

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.