Compilations incrémentielles et cache dans les monorepos
Optimisez les temps de compilation avec la compilation incrémentielle et Turborepo
Compilations incrémentielles et cache dans les monorepos est une leçon TypeScript Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage TypeScript Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours TypeScript Academy comprend 4 leçons au total.
Pourquoi les compilations incrémentielles sont importantes
Dans les grands monodépôts, recompiler chaque paquet à chaque modification est lent. Les compilations incrémentielles détectent ce qui a changé et ne recompilent que les paquets concernés.
# Without incremental: all 20 packages rebuild every time
# With incremental: only 2 changed packages rebuildMode incrémentiel de TypeScript
Activez "incremental": true dans tsconfig pour générer un fichier .tsbuildinfo qui met en cache l’état de la compilation précédente afin d’accélérer les exécutions suivantes.
{
"compilerOptions": {
"incremental": true,
"tsBuildInfoFile": "./.tsbuildinfo"
}
}tsc --build pour les références de projet
tsc --build est intrinsèquement incrémentiel pour les espaces de travail utilisant des références de projet : il suit les horodatages et ignore les paquets déjà à jour.
# 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 dateMise en cache avec Turborepo
Turborepo met en cache les sorties des tâches, comme dist/, et les restaure depuis le cache lorsque les entrées inchangées le permettent, y compris pour toute l’équipe grâce au cache distant.
// turbo.json
{
"pipeline": {
"build": {
"dependsOn": ["^build"],
"outputs": ["dist/**", ".tsbuildinfo"]
}
}
}Mise en cache distante avec Turborepo
Partagez le cache de compilation entre les machines d’intégration continue et les membres de l’équipe afin que personne ne recompile ce qui a déjà été compilé par quelqu’un d’autre.
# Link to Vercel remote cache
npx turbo login
npx turbo linkCache de calcul de Nx
Nx fournit une mise en cache similaire avec une analyse détaillée des éléments concernés, fondée sur le graphe des dépendances des projets.
# Nx: only test affected projects
npx nx affected --target=test --base=mainEntrées et sorties du cache
Pour garantir une mise en cache correcte, déclarez toutes les entrées, comme les fichiers source et les variables d’environnement, ainsi que les sorties, comme les répertoires dist et tsbuildinfo, dans la configuration de votre outil de compilation.
// turbo.json with inputs
{
"pipeline": {
"build": {
"inputs": ["src/**", "tsconfig.json"],
"outputs": ["dist/**"]
}
}
}Invalider le cache
Les caches sont invalidés lorsque les entrées changent. Évitez d’inclure des fichiers volatils, comme les journaux ou les horodatages, dans les entrées afin d’empêcher les recompilations inutiles.
# Force rebuild even if cached
turbo run build --forceIntégration à l’intégration continue
Connectez l’intégration continue (GitHub Actions, CircleCI) au cache distant afin que les compilations des PR soient rapides grâce à la réutilisation des artefacts de compilation précédents.
# .github/workflows/ci.yml
- name: Build
run: npx turbo build
env:
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
TURBO_TEAM: my-teamVérification incrémentielle des types uniquement
Utilisez tsc --noEmit --incremental pour les étapes rapides d’intégration continue qui vérifient uniquement les types : elles ignorent la génération tout en profitant de la mise en cache.
npx tsc --noEmit --incremental
# Quick type check with .tsbuildinfo cacheRécapitulatif : compilations incrémentielles
Dans les monodépôts, les compilations incrémentielles associent tsBuildInfo de TypeScript à tsc --build, ainsi qu’à la mise en cache de Turborepo ou Nx, afin de réduire au minimum le travail de compilation à chaque modification.
Vérification rapide
Quel fichier TypeScript génère-t-il pour activer les compilations incrémentielles ?
Ce que vous avez appris
Les compilations incrémentielles utilisent le fichier .tsbuildinfo de TypeScript et tsc --build pour ignorer les paquets inchangés. Turborepo et Nx étendent ce mécanisme grâce à la mise en cache distante et à l’analyse limitée aux éléments concernés dans l’ensemble du monodépôt.
Apprends TypeScript avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 101
- Leçons
- 352
Questions Fréquemment Posées
La leçon « Compilations incrémentielles et cache dans les monorepos » est-elle gratuite ?
Oui — le texte complet de « Compilations incrémentielles et cache dans les monorepos » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours TypeScript Academy, passe à CoddyKit PRO. Le cours TypeScript Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Compilations incrémentielles et cache dans les monorepos » ?
Optimisez les temps de compilation avec la compilation incrémentielle et Turborepo Tu pratiques TypeScript Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer TypeScript Academy ?
Aucune expérience préalable n'est requise. TypeScript Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Compilations incrémentielles et cache dans les monorepos » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon TypeScript Academy ?
Oui. Chaque leçon TypeScript Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Les références de projets TypeScript expliquées
- Espaces de travail pnpm avec TypeScript
- Stratégie de bibliothèque de types partagés
- Compilations incrémentielles et cache dans les monorepos