Guide complet .cursorignore Cursor : 3 stratégies pour optimiser l'indexation des grands projets

Mise à jour du 2026-06-08 : revérifié avec la doc officielle de Cursor (juin 2026). Cursor respecte déjà votre .gitignore plus une liste d’exclusion par défaut intégrée (node_modules, lockfiles, artefacts de build, binaires/médias sont déjà largement exclus de l’indexation) ; .cursorignore sert donc surtout de blocage d’accès strict plus exclusions supplémentaires, tandis que .cursorindexingignore ne bloque que l’indexation (la mention @ permet encore de lire le fichier). Par ailleurs, le fichier unique .cursorrules à la racine est désormais legacy (ignoré en mode Agent) — placez vos règles de projet dans .cursor/rules/*.mdc.
Mardi dernier après-midi, j’ouvre le monorepo de l’entreprise — plus de 500 000 lignes. L’icône Syncing de Cursor tourne en bas à droite. Cinq minutes… toujours là. Dix minutes… toujours en indexation. Je reviens avec un café : ça tourne encore, lentement.
Le pire arrive après. L’indexation finit enfin ; je demande à l’IA d’optimiser un composant React. Sa proposition : « modifiez directement node_modules/react-dom/cjs/react-dom.development.js ». Je fixe l’écran trois secondes — l’IA prenait le code des dépendances pour le mien.
J’ai cru un moment que Cursor n’était pas fait pour les gros projets. Puis j’ai découvert .cursorignore. Tout a changé : l’index est passé de 12 à 3 minutes, et l’IA ne propose plus de toucher à node_modules.
Si l’indexation Cursor est lente ou que l’IA se trompe de périmètre, cet article vous donne 3 stratégies immédiates et un modèle de configuration prêt à copier.
Pourquoi l’indexation Cursor est si lente
Commençons par le mécanisme. À l’ouverture du projet, Cursor transforme les fichiers en vecteurs d’embedding — une représentation numérique que l’IA peut exploiter. Chaque fichier est parcouru, vectorisé, stocké. Plus il y a de fichiers, plus c’est long.
La vraie question : est-ce que l’IA doit vraiment tout comprendre ?
La plupart des dépôts contiennent des masses de fichiers peu utiles pour l’assistance au code :
node_modules — le trou noir des dépendances
Un front-end moyen peut compter des dizaines de milliers de fichiers dans node_modules. Cursor les indexe tous, alors que vous n’avez pas besoin que l’IA décortique l’implémentation interne de lodash.
dist/build — déchets de compilation
Code minifié sur une ligne : inutile à indexer, illisible pour l’IA.
.git — l’historique
Des centaines de Mo, parfois des Go. Indexer l’historique Git, c’est du temps perdu.
Gros assets statiques
Vidéos, images, polices — l’IA ne les lit pas ; les indexer ne sert à rien.
Test personnel : projet Next.js ~100k lignes avec node_modules et .next complets → 8 minutes d’index. Après .cursorignore : 2 minutes. Rapport 1:4.
La précision compte autant. Quand le contexte est noyé sous node_modules, l’IA mélange votre code et les libs — d’où les suggestions de modifier des packages ou de confondre des API tierces avec les vôtres.
Guide complet de configuration .cursorignore
Bonne nouvelle : la syntaxe est identique à .gitignore. Si vous maîtrisez l’un, l’autre est trivial.
Syntaxe de base
Créez .cursorignore à la racine (avec le point) :
# Commentaire avec #
# Fichier précis
config.json
# Dossier (slash final)
node_modules/
dist/
# Wildcards
*.log # tous les logs
**/*.test.js # tests à tous niveaux
# Négation (réinclure)
!important.log
Modèle prêt à l’emploi
Configuration de base pour la majorité des projets :
# Dépendances
node_modules/
.pnp/
.pnp.js
vendor/
packages/
# Builds
dist/
build/
out/
.next/
.nuxt/
.cache/
.vite/
.turbo/
# Tests et couverture
coverage/
.nyc_output/
*.spec.js
*.test.js
__tests__/
# Logs et temporaires
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.DS_Store
*.swp
*.swo
*~
# Environnement (sécurité)
.env
.env.local
.env.*.local
credentials.json
*.key
*.pem
# Contrôle de version
.git/
.svn/
.hg/
# IDE (optionnel)
.vscode/
.idea/
*.sublime-*
# Gros fichiers (ajuster selon besoin)
*.mp4
*.mov
*.avi
*.zip
*.tar.gz
*.pdf
public/videos/
Couvre ~90 % des cas. Enregistrez, puis Settings > Features > Codebase Indexing → Refresh.
Config avancée par scénario
React/Vue — exclure les gros fichiers sous public/ :
public/assets/
public/images/*.png
public/fonts/
Monorepo — exclure les packages hors périmètre :
apps/mobile/
apps/admin/
packages/backend-utils/
Full-stack — séparer front et back :
# Plutôt front
server/
api/
database/
migrations/
# Plutôt back
client/
public/
src/components/
Astuce debug : même si la commande est Git, la syntaxe étant la même :
git check-ignore -v [chemin-du-fichier]
.cursorignore vs .cursorindexingignore — le bon outil
Au début, les deux noms me semblaient interchangeables. En réalité : .cursorignore = blocage total ; .cursorindexingignore = blocage partiel.
Différence essentielle
.cursorignore : l’IA n’y accède pas — pas d’index, pas de lecture. Fichiers sensibles (.env, clés) ou inutiles (node_modules, builds).
.cursorindexingignore : hors des recherches codebase, mais lecture possible à la demande (par mention @ ou glisser-déposer). Ajouté plus tard pour la performance, sans fermer la porte.
Exemple : dossier legacy/ de trois ans — vous ne voulez pas polluer la recherche, mais l’IA peut parfois s’y référer → .cursorindexingignore.
Tableau des usages
| Type de fichier | Config recommandée | Raison |
|---|---|---|
| .env, credentials.json | .cursorignore | Sécurité — accès interdit |
| node_modules | .cursorignore | Pas besoin du internals des deps |
| dist/build | .cursorignore | Artefacts sans valeur pour l’IA |
| Fixtures de test | .cursorindexingignore | Moins de bruit, accès conservé |
| Code legacy | .cursorindexingignore | Rare en recherche, utile à la lecture |
| Brouillons de doc | .cursorindexingignore | Allège l’index |
| Gros jeux de données de test | .cursorignore | Inutile et volumineux |
Priorité des règles
.gitignoredu projet (respect automatique).cursorignore(peut surcharger avec!).cursorindexingignore
Exemple : logs/ ignoré par Git mais un fichier de debug doit rester visible pour l’IA :
!logs/important-debug.log
« Hierarchical Cursor Ignore » (dans Settings) : Cursor remonte les .cursorignore parents — pratique pour un monorepo avec config racine + règles par sous-projet.
Ma stratégie
Dans 90 % des cas, .cursorignore suffit. .cursorindexingignore est un affinage pour projets très lourds ou structures complexes.
Approche progressive :
- D’abord
.cursorignorepour l’évident - Une semaine d’observation
- Puis
.cursorindexingignoresi besoin
Ne surchargez pas dès le départ.
3 stratégies d’optimisation pour les monorepos
Les monorepos sont ceux qui font le plus souvent « planter » l’expérience Cursor : front, back, mobile, admin… L’IA se perd.
Sur un monorepo de 12 apps, l’IA m’a conseillé d’importer une util du package API dans un composant front — logique en apparence, impossible à l’exécution (environnements séparés).
Trois stratégies qui tiennent la route :
Stratégie 1 : découper l’index par zone de travail
Excluez ce que vous ne touchez pas.
Équipe front sur apps/web :
apps/mobile/
apps/admin/
apps/api/
packages/backend-utils/
packages/database/
services/
Index plus rapide, moins de bruit. Chez moi : deux packages gardés → 15 min → 4 min.
Full-stack qui alterne : .cursorignore.frontend / .cursorignore.backend, copier le bon fichier vers .cursorignore.
Stratégie 2 : Project Rules pour la structure
L’IA ne devine pas toujours les liens entre dossiers. Utilisez les Project Rules comme carte du projet. Note : l’ancien fichier unique .cursorrules à la racine est désormais legacy et ignoré en mode Agent ; pour les nouveaux projets, utilisez des fichiers .mdc dans .cursor/rules/ (pas .cursorignore). Créez par exemple .cursor/rules/project-structure.mdc avec un frontmatter YAML (description, globs, alwaysApply) :
---
description: structure du monorepo et règles d'import
alwaysApply: true
---
# Structure du projet
Monorepo avec :
- apps/web: front Next.js, port 3000
- apps/api: API Node.js + Express, port 8000
- apps/admin: admin React, port 3001
- packages/ui: composants partagés
- packages/utils: utilitaires communs
## Règles d'import
- web/admin → packages/ui et packages/utils uniquement
- pas d'import direct de apps/api depuis le front
- packages/* ne dépendent pas des apps/*
## Focus actuel
Développement sur apps/web — suggestions centrées sur le front.
L’IA lit ces règles ; les recommandations hors frontière deviennent rares.
Stratégie 3 : une fenêtre par sous-application
Monorepo énorme (20+ apps) : même avec .cursorignore, une seule fenêtre reste trop large.
- Fenêtre 1 :
apps/web - Fenêtre 2 :
apps/api - Fenêtre 3 :
packages/ui
Index et contexte séparés, suggestions plus précises. Coût : changer de fenêtre — souvent rentable.
Dépendance entre apps (web → ui) : dans la fenêtre web, citez explicitement :
@folder packages/ui Vérifiez la définition des props du composant Button
Léger par fenêtre, accès aux packages quand il faut.
Idée directrice monorepo
Ne montrer à l’IA que ce qu’elle doit voir.
Plus le dépôt est grand, plus il faut soustraire. Aidez-la à tracer des frontières — elle répondra mieux.
Vérifier et maintenir la configuration
.cursorignore n’est pas « configure et oublie ». Il faut valider et entretenir.
Vérifier que ça marche
Le plus simple : comparer la durée Syncing avant/après.
Méthodes plus précises :
- État de l’index — Settings > Features > Codebase Indexing : le nombre de fichiers doit baisser.
- Périmètre IA —
@codebase: après exclusion denode_modules, « quels composants React » ne doit pas listernode_modules/react. - Recherche — Cmd/Ctrl + P sur un fichier dans un dossier exclu : introuvable = OK.
Quand rafraîchir manuellement
L’incrémental ne suffit pas toujours :
- modification de
.cursorignore - gros changement de branche Git
- ajout/suppression massif de fichiers
- réponses IA incohérentes (index peut-être périmé)
Settings > Features > Codebase Indexing > Refresh, attendre la fin du Syncing.
Maintenance courante
Checklist mensuelle :
- nouveaux dossiers de build (ex.
.output/après upgrade) - nouveaux gros répertoires à exclure
- règles obsolètes à retirer
Équipe :
- règles communes (node_modules, dist) → Git
- préférences perso →
.git/info/excludeou.cursorignore.local
Dans .gitignore :
.cursorignore.local
Commentaires dans le fichier :
# 2025-01-15: données d'entraînement IA, trop volumineux
data/training/
# 2025-01-10: perf-tests, logs massifs
perf-tests/
Dans trois mois, vous serez content d’avoir documenté.
À lire aussi
- Indexation de la base de code Cursor : principes, configuration et symbole @
- Cursor sur les gros projets : garder l’Agent sur les rails dans un grand dépôt
- Guide complet du quota gratuit de Cursor
Synthèse
Indexation lente, IA à côté de la plaque — ce n’est pas forcément que l’outil est mauvais. Souvent, on n’a pas dit à l’IA quoi regarder et quoi ignorer.
.cursorignore est simple et puissant. Cinq minutes de setup peuvent économiser des heures d’attente et améliorer nettement la qualité des suggestions.
Trois actions :
- Maintenant : copier le modèle de base, créer
.cursorignoreà la racine - Adapter : règles React/Vue/monorepo selon votre cas
- Itérer : une semaine d’observation, noter les écarts, ajuster
Pas besoin de la perfection du premier coup — 80 % avec le modèle de base, le reste au fil de l’usage.
Sur un gros projet avec Cursor, essayez ces pistes. Partagez vos configs ou galères en commentaire — ça peut aider d’autres développeurs dans la même situation.
Configuration complète de .cursorignore pour Cursor
Configurer .cursorignore de zéro pour optimiser l'indexation du codebase Cursor
⏱️ Estimated time: 10 min
- 1
Step 1: Créer .cursorignore et ajouter la config de base
Étape 1 : créer .cursorignore à la racine du projet
Modèle de base (90 % des cas) :
• Dépendances : node_modules/, vendor/, .pnp/
• Builds : dist/, build/, out/, .next/, .nuxt/, .cache/
• Tests : coverage/, *.spec.js, *.test.js, __tests__/
• Logs : *.log, npm-debug.log*, yarn-error.log*
• Environnement : .env, .env.local, credentials.json, *.key
• VCS : .git/, .svn/
• Gros assets : *.mp4, *.zip, *.pdf, public/videos/
Note : syntaxe comme .gitignore, slash final pour les dossiers, wildcards * et **, # pour les commentaires - 2
Step 2: Ajouter une config ciblée selon le type de projet
Étape 2 : config avancée selon votre stack
React/Vue en plus :
• public/assets/ (gros statiques)
• public/images/*.png
• public/fonts/
Monorepo :
• apps/mobile/ (app mobile)
• apps/admin/ (back-office)
• packages/backend-utils/
• ne garder que le sous-projet actif
Full-stack :
• front : exclure server/, api/, database/, migrations/
• back : exclure client/, public/, src/components/
Astuce : préparer .cursorignore.frontend et .cursorignore.backend et basculer selon le travail du jour - 3
Step 3: Vérifier que la configuration fonctionne
Étape 3 : contrôler l'effet
Méthode 1 : temps d'indexation
• Comparer la durée Syncing avant/après — doit baisser nettement
Méthode 2 : état de l'index
• Settings > Features > Codebase Indexing
• Le nombre de fichiers indexés doit diminuer
Méthode 3 : contexte IA
• @codebase : « quels composants React dans le projet »
• L'IA ne doit pas lister ceux sous node_modules/react
Méthode 4 : recherche
• Cmd/Ctrl + P sur un fichier dans un dossier exclu
• Introuvable = succès
Rafraîchir : Settings > Features > Codebase Indexing > Refresh - 4
Step 4: Config spéciale monorepo (optionnel)
Étape 4 : optimisations monorepo
Stratégie 1 : découper par zone
• Exclure les sous-projets hors périmètre dans .cursorignore
• Ex. équipe front : apps/mobile/, apps/api/, packages/backend-utils/
• Effet : 15 min → 4 min d'indexation
Stratégie 2 : Project Rules
• Créer des fichiers .mdc dans .cursor/rules/ (l'ancien .cursorrules racine est legacy, ignoré en mode Agent)
• Décrire structure, relations entre apps, règles d'import
• Réduit les recommandations hors frontière
Stratégie 3 : fenêtres séparées
• Une fenêtre Cursor par sous-app (web, api, etc.)
• @folder pour citer explicitement un package partagé
FAQ
Quelle différence entre .cursorignore et .cursorindexingignore ? Lequel utiliser ?
• .cursorignore : accès IA totalement bloqué — pas d'index, lecture ni référence ; pour .env, credentials.json, node_modules, dist
• .cursorindexingignore : hors index seulement, lecture possible si besoin ; pour legacy, fixtures de test
Recommandation : .cursorignore suffit dans 90 % des cas ; config de base, observer une semaine, puis affiner avec .cursorindexingignore si nécessaire
L'indexation reste lente après .cursorignore : que faire ?
1. Config active ? Settings > Features > Codebase Indexing — nombre de fichiers en baisse
2. Rafraîchir manuellement après modification (bouton Refresh)
3. Gros dossiers oubliés : `du -sh */` puis ajouter à .cursorignore
4. Monorepo : exclure sous-projets hors scope ou fenêtres séparées
5. Cache : supprimer .cursor et réindexer
Référence : projet 100k lignes — 8 min avant, 2-3 min après ; peu d'écart = config incomplète
Sans node_modules indexé, l'IA connaît-elle encore les API des libs tierces ?
• Les modèles connaissent déjà React, Vue, Express, etc.
• Vos import indiquent les bibliothèques utilisées
• L'IA déduit l'usage sans lire le source de node_modules
Test : Hooks React, Lodash, Axios — suggestions normales ; moins de confusion entre votre code et les dépendances
Exception : libs très rares — réinclure temporairement avec la syntaxe !
En équipe, faut-il versionner .cursorignore dans Git ?
À committer :
• Règles communes (node_modules, dist, .git, .env)
• Dossiers propres au framework (.next, .nuxt, .cache)
• Gros assets (public/videos, data/datasets)
À ne pas committer :
• Préférences personnelles (exclusion de certains sous-projets)
• Chemins propres à une machine
• Exclusions temporaires de debug
Pratique :
1. .cursorignore pour le commun
2. .cursorignore.local pour le perso
3. .cursorignore.local dans .gitignore
4. Commentaires dans .cursorignore pour documenter chaque règle
Monorepo : comment front et back configurent-ils des .cursorignore différents ?
1. Plusieurs fichiers
• .cursorignore.frontend et .cursorignore.backend
• Copier celui actif vers .cursorignore
• Idéal pour full-stack qui alterne souvent
2. Fenêtres séparées
• Fenêtre 1 : apps/web, fenêtre 2 : apps/api
• Index et .cursorignore indépendants
• Pour monorepos très larges (20+ apps)
3. Branches Git
• main = config commune, branche perso = custom
• Revert avant merge si besoin
Recommandation : petite équipe → 1 ; grande équipe → 2
L'IA cite encore du code dans des dossiers exclus : pourquoi ?
1. Index pas rafraîchi → Settings > Codebase Indexing > Refresh
2. Syntaxe : slash final (node_modules/), wildcards (*.log pas *.log/)
3. Conflit .gitignore — Cursor lit les deux ; utiliser ! pour surcharger
4. Historique de chat — nouvelle conversation ou supprimer le cache .cursor
5. Fichier toujours visible — Cmd/Ctrl + P ; si trouvé, pas exclu ; `git check-ignore -v [chemin]` pour déboguer
8 min de lecture · Publié le: 15 janv. 2026 · Mis à jour le: 27 juil. 2026
Guide complet Cursor
Si vous arrivez depuis la recherche, le plus rapide est de passer à l’article précédent ou suivant de cette série.
Précédent
Guide complet de l'indexation Cursor Codebase : principes, configuration et @ symboles en pratique
Guide 2026 de l'indexation du codebase Cursor : fonctionnement, configuration .cursorignore, les 6 symboles @, et la vérité sur la confidentialité — votre index part-il dans le cloud ?
Partie 9 sur 25
Suivant
Cursor @Codebase, @Docs, @Files : lequel choisir ? Guide de décision par scénario
Guide pratique pour les symboles @ de Cursor : @Codebase, @Docs et @Files, avec arbre de décision, cas réels et bonnes pratiques pour choisir le bon @ et gagner en efficacité avec l'IA.
Partie 11 sur 25



Commentaires
Connectez-vous avec GitHub pour laisser un commentaire