Build incrementali e cache nei monorepo
Ottimizzi i tempi di build con la compilazione incrementale e Turborepo.
Build incrementali e cache nei monorepo è una lezione TypeScript Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento TypeScript Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso TypeScript Academy include 4 lezioni in totale.
Perché le build incrementali sono importanti
Nei monorepo di grandi dimensioni, ricostruire ogni pacchetto a ogni modifica è lento. Le build incrementali rilevano che cosa è cambiato e ricompilano solo i pacchetti interessati.
# Without incremental: all 20 packages rebuild every time
# With incremental: only 2 changed packages rebuildModalità incrementale di TypeScript
Abiliti "incremental": true nel tsconfig per generare un file .tsbuildinfo che memorizza nella cache lo stato della build precedente, velocizzando le esecuzioni successive.
{
"compilerOptions": {
"incremental": true,
"tsBuildInfoFile": "./.tsbuildinfo"
}
}tsc --build per i riferimenti ai progetti
tsc --build è incrementale per natura nei workspace con riferimenti ai progetti: tiene traccia dei timestamp e salta i pacchetti già aggiornati.
# First build: all packages compiled
tsc --build
# Second build: only changed packages compiled
tsc --build
# [12:00:01 PM] Project 'packages/core' is up to dateCaching di Turborepo
Turborepo memorizza nella cache gli output delle attività, come dist/, e li ripristina dalla cache quando gli input non sono cambiati, anche tra i membri del team tramite la cache remota.
// turbo.json
{
"pipeline": {
"build": {
"dependsOn": ["^build"],
"outputs": ["dist/**", ".tsbuildinfo"]
}
}
}Caching remoto con Turborepo
Condivida la cache della build tra le macchine CI e i membri del team, così nessuno deve ricostruire ciò che qualcun altro ha già creato.
# Link to Vercel remote cache
npx turbo login
npx turbo linkCache dei calcoli di Nx
Nx offre una memorizzazione nella cache simile, con un'analisi dettagliata dei progetti interessati basata sul grafo delle dipendenze dei progetti.
# Nx: only test affected projects
npx nx affected --target=test --base=mainInput e output della cache
Per una memorizzazione nella cache corretta, dichiari tutti gli input, come file sorgente e variabili d'ambiente, e gli output, come directory dist e tsbuildinfo, nella configurazione dello strumento di build.
// turbo.json with inputs
{
"pipeline": {
"build": {
"inputs": ["src/**", "tsconfig.json"],
"outputs": ["dist/**"]
}
}
}Invalidazione della cache
Le cache vengono invalidate quando cambiano gli input. Eviti di includere file variabili, come log o timestamp, tra gli input, per impedire ricostruzioni non necessarie.
# Force rebuild even if cached
turbo run build --forceIntegrazione con la CI
Colleghi la CI, ad esempio GitHub Actions o CircleCI, alla cache remota, così le build delle pull request possono riutilizzare gli artefatti generati in precedenza.
# .github/workflows/ci.yml
- name: Build
run: npx turbo build
env:
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
TURBO_TEAM: my-teamSolo controllo incrementale dei tipi
Utilizzi tsc --noEmit --incremental per eseguire rapidamente nella CI i controlli dei tipi senza generare output, beneficiando comunque della memorizzazione nella cache.
npx tsc --noEmit --incremental
# Quick type check with .tsbuildinfo cacheRiepilogo: build incrementali
Le build incrementali nei monorepo combinano tsBuildInfo di TypeScript con tsc --build e la memorizzazione nella cache di Turborepo o Nx per ridurre al minimo il lavoro di compilazione a ogni modifica.
Verifica rapida
Quale file genera TypeScript per abilitare le build incrementali?
Che cosa ha imparato
Le build incrementali utilizzano il file .tsbuildinfo di TypeScript e tsc --build per saltare i pacchetti non modificati. Turborepo e Nx estendono questo meccanismo con la cache remota e l'analisi limitata ai progetti interessati nell'intero monorepo.
Impara TypeScript con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 101
- Lezioni
- 352
Domande Frequenti
La lezione «Build incrementali e cache nei monorepo» è gratuita?
Sì — il testo completo di «Build incrementali e cache nei monorepo» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso TypeScript Academy, passa a CoddyKit PRO. Il corso TypeScript Academy include 4 lezioni in totale.
Cosa imparerò in «Build incrementali e cache nei monorepo»?
Ottimizzi i tempi di build con la compilazione incrementale e Turborepo. Eserciti TypeScript Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare TypeScript Academy?
Non è richiesta alcuna esperienza precedente. TypeScript Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Build incrementali e cache nei monorepo»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione TypeScript Academy?
Sì. Ogni lezione TypeScript Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Riferimenti ai progetti TypeScript
- Workspace pnpm con TypeScript
- Strategia per un pacchetto di tipi condivisi
- Build incrementali e cache nei monorepo