TypeScript Academy · Leçon

Compilations incrémentielles et cache dans les monorepos

Optimisez les temps de compilation avec la compilation incrémentielle et Turborepo

Leçon 4 sur 413 étapes

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 rebuild

Mode 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 date

Mise 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 link

Cache 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=main

Entré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 --force

Inté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-team

Vé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 cache

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

Gratuit pour commencer

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

  1. Les références de projets TypeScript expliquées
  2. Espaces de travail pnpm avec TypeScript
  3. Stratégie de bibliothèque de types partagés
  4. Compilations incrémentielles et cache dans les monorepos
← Retour à TypeScript Academy