Modifier plusieurs fichiers en une seule demande
Découvrez comment orchestrer le développement d'une fonctionnalité complète touchant à l'ensemble de votre projet.
Introduction
Jusqu'à présent, nous avons effectué des modifications chirurgicales : changer une couleur, un titre, ou ajouter une image dans un fichier précis. C'est idéal pour s'entraîner.
Cependant, dans le monde réel, une application moderne est un écosystème interconnecté. Une simple fonctionnalité peut nécessiter de créer une nouvelle page, de modifier le menu pour y ajouter un lien, de mettre à jour la base de données, et de styliser le tout.
Modifier 5 fichiers d'un coup est l'épreuve du feu. Codex excelle dans cet exercice, mais c'est également là que les erreurs d'incompréhension pardonnent le moins. Une demande vague se transformera en modifications aléatoires disséminées dans tout votre projet. Apprenons à maîtriser la bête.
Pourquoi plusieurs fichiers sont souvent concernés
Imaginons un cas simple : "Je veux une page Contact". Si l'on y réfléchit techniquement, cette demande implique forcément d'altérer la structure globale de l'application.
| Objectif | Fichiers | Pourquoi |
|---|---|---|
| Ajouter une page Contact | contact.html, style.css, navbar.html | Création de la page, style de la page, ajout du lien dans le menu global. |
| Ajouter un mode sombre | global.css, app.js, index.html | CSS pour les couleurs, JS pour le bouton de bascule, HTML pour insérer le bouton. |
| Ajouter une authentification | login.js, routeur.js, header.html | Logique de connexion, redirection si non connecté, afficher/cacher le bouton "Déconnexion". |
Comment préparer une demande multi-fichiers
Une tâche complexe nécessite une méthode rigoureuse. Ne foncez pas tête baissée.
- Comprendre l'objectif : "Je veux un bouton qui permet de passer le site en mode nuit."
- Identifier les risques : "Cela risque d'impacter toutes les couleurs de tous les fichiers CSS."
- Décrire le résultat : "Le fond doit être noir et le texte blanc. Le bouton doit être dans l'en-tête."
- Préciser les contraintes : "Je ne veux pas utiliser de bibliothèque externe, fais-le en CSS pur."
- Demander une analyse : "Avant de coder, explique-moi quels fichiers tu vas modifier et comment."
graph TD;
A[Idée] --> B[Identification des contraintes];
B --> C[Analyse préalable par Codex];
C --> D[Validation humaine de la stratégie];
D --> E[Génération et modification du code];
E --> F[Vérification visuelle et technique];
Expliquer clairement son objectif
Sur une requête complexe, le niveau de précision du prompt définit directement la qualité du code. Voici la différence entre un développeur débutant et un expert Codex :
| Mauvais prompt (Dangereux) | Bon prompt (Contrôlé) |
|---|---|
| Ajoute une FAQ. | Ajoute une section FAQ en bas de page d'accueil. Utilise le style des cartes existantes. |
| Rends le site responsive. | Modifie le CSS global pour que la grille passe sur une seule colonne en dessous de 768px. |
| Fais un mode sombre. | Analyse les couleurs actuelles. Propose une palette inversée pour un mode sombre, sans modifier le code. |
| Refais le header. | Refais le header en ajoutant un logo à gauche et 3 liens à droite, sans casser le fichier index.js. |
| Corrige les erreurs. | La console affiche une erreur "undefined" sur User.js. Corrige cette erreur et vérifie les fichiers liés. |
| Mets à jour le design. | Modifie les boutons de `style.css` pour qu'ils aient des bords arrondis (8px) et une ombre douce. |
| Ajoute une page profil. | Crée un fichier profil.html. Utilise exactement le même Header et Footer que index.html. |
| Fais un formulaire. | Crée un formulaire de contact (Nom, Email, Message) qui appelle la fonction sendMail() au clic. |
| Optimise le site. | Analyse le fichier de script et propose 3 moyens de le rendre plus rapide. N'effectue aucune modification. |
| Traduis en anglais. | Traduis le texte visible du composant Article en anglais. Ne touche ni aux variables JS ni au CSS. |
| Ajoute des animations. | Ajoute une transition CSS de 0.3s sur tous les éléments au survol (hover). |
| Sécurise le login. | Ajoute une vérification de la longueur du mot de passe (min 8 caractères) dans auth.js. |
| Nettoie mon code. | Supprime toutes les fonctions JavaScript qui ne sont jamais appelées dans le projet. |
| Mets une navbar. | Crée un composant Navbar collant (sticky) en haut de l'écran, avec un fond blanc. |
| Fais un bouton retour. | Ajoute un bouton Retour à l'Accueil en haut à gauche de la page Article. |
Laisser Codex identifier les fichiers (L'audit préalable)
Ne prenez jamais le risque de laisser Codex parcourir vos fichiers et les écraser sans préavis.
L'erreur classique :
"Ajoute un système d'articles recommandés à la fin des pages d'articles de blog."
(Codex va analyser, trouver une solution, et générer massivement du code. S'il se trompe d'architecture, il faudra passer une heure à tout nettoyer).
L'approche de l'expert :
"Je souhaite ajouter un système d'articles recommandés à la fin des pages de blog. Analyse le projet. Identifie les fichiers concernés. Explique la stratégie que tu comptes adopter. N'effectue ENCORE AUCUNE modification."
Codex va vous répondre : "J'ai analysé le projet. Je devrai modifier `Article.html` pour l'affichage, `styles.css` pour la grille, et `données.json` pour ajouter des relations. Es-tu d'accord avec cette approche ?"
Modifier plusieurs fichiers sans perdre le contrôle
La règle d'or pour survivre à des modifications massives : découpez le problème.
Même si Codex peut modifier 10 fichiers simultanément, il est préférable de piloter l'opération étape par étape :
- Étape 1 : Les fondations. "Commence uniquement par créer le modèle de données JSON et les fonctions JavaScript pour récupérer les articles recommandés." (Vérifiez la console).
- Étape 2 : L'interface. "C'est bon. Maintenant, intègre uniquement le HTML à la fin des pages de blog, sans CSS." (Vérifiez l'apparition du texte brut).
- Étape 3 : Le style. "Parfait. Maintenant, applique un design en grille CSS pour ces recommandations." (Vérifiez le visuel final).
Ajouter une fonctionnalité complète (Cas pratiques)
1. Créer une Foire Aux Questions (FAQ)
Contexte : Vous voulez une page FAQ avec des questions qui se déplient (accordéons).
Génère une page FAQ complète. Crée un nouveau fichier faq.html. Le comportement d'accordéon (déplier/plier) doit être géré avec les balises natives HTML <details> et <summary> (sans JavaScript). Ajoute un lien vers cette page dans le menu principal (header.html).Pourquoi ça fonctionne : La technologie est imposée (HTML natif) évitant la création de fichiers JS inutiles. Les fichiers cibles sont listés.
2. Ajouter un système de recherche
Contexte : Un blog statique nécessitant une barre de recherche.
Analyse les fichiers d'articles. Crée un fichier search.js capable de filtrer les articles par titre selon ce que l'utilisateur tape. Intègre une barre de recherche visuelle dans le composant Navbar. N'utilise aucune base de données, fais un filtrage local en JavaScript.Pourquoi ça fonctionne : La contrainte technique majeure est clairement posée (filtrage local, pas de base de données backend).
Limiter les modifications
Souvent, le problème n'est pas ce que Codex fait de bien, c'est ce qu'il fait en trop. Encadrez-le avec des "Ne pas" absolus :
- "Ne renomme aucun fichier existant."
- "Conserve l'architecture CSS exacte telle qu'elle est. Utilise les classes utilitaires déjà présentes."
- "Modifie la fonction de tri, mais ne touche absolument pas à la fonction d'affichage qui se trouve juste en dessous."
Vérifier les modifications (Checklist)
Une fonctionnalité déployée sur plusieurs fichiers augmente exponentiellement le risque de "dommages collatéraux".
- [ ] Compilation : Si vous utilisez un framework (React, Vue), l'application compile-t-elle encore sans erreur ?
- [ ] Console vierge : Aucun message d'erreur rouge `ReferenceError` ou `undefined` dans la console du navigateur ?
- [ ] Cohérence visuelle : La nouvelle fonctionnalité utilise-t-elle la même police et les mêmes couleurs que le reste du site ?
- [ ] Les liens morts : Si un menu a été modifié, tous les anciens liens fonctionnent-ils encore ?
- [ ] Régression : Ce qui marchait hier marche-t-il toujours aujourd'hui ?
Les erreurs les plus fréquentes
- Symptôme : "Codex a tout cassé, mon site est un champ de ruines."
Cause : Vous avez demandé "Refais mon site pour qu'il soit moderne" sans aucune précaution.
Bonne pratique : Ne demandez jamais de refonte globale en un prompt. - Symptôme : "Il a créé des fichiers en double."
Cause : Au lieu d'utiliser `styles.css`, il a généré un `global.css` car vous ne lui avez pas donné le nom.
Bonne pratique : "Utilise le fichier `styles.css` existant." - Symptôme : "Ma modification marche, mais le design de l'accueil a explosé."
Cause : Codex a modifié une classe CSS globale (ex: `.card`) utilisée partout.
Bonne pratique : "Créé une classe CSS spécifique uniquement pour cette nouvelle fonctionnalité." - Symptôme : Vous avez perdu le fil de la conversation.
Cause : Vous avez effectué 25 retours en arrière dans la même session de chat.
Bonne pratique : Fermez la conversation, faites un git commit, et ouvrez un nouveau terminal propre. - Symptôme : Le code est fonctionnel mais impossible à relire.
Cause : L'IA a accumulé des scripts sans les ranger.
Bonne pratique : Demandez une pause refactoring : "Sépare ce gros fichier en 3 petits fichiers logiques."
Atelier pratique
Exercice 1 : La bannière de cookies
Contexte : Obligation légale.
Prompt : "Ajoute une bannière d'acceptation de cookies. Elle doit s'afficher en bas de toutes les pages (modifie le fichier de layout global). Une fois cliquée, elle doit utiliser le localStorage JS pour ne plus jamais réapparaître."
Exercice 2 : La galerie d'images
Contexte : Portfolio.
Prompt : "Analyse mon fichier HTML. Remplace les images isolées par une vraie grille CSS dynamique de galerie. Assure-toi que la grille se transforme en 1 seule colonne sur mobile."
Exercice 3 : Le nettoyage global
Contexte : Code trop lourd.
Prompt : "Parcours tous les fichiers CSS de ce projet et identifie (sans les supprimer d'abord) toutes les classes qui ne sont appelées nulle part dans le HTML."
Exercice 4 : La standardisation
Contexte : Différents styles de boutons (rouge, rouge foncé, rouge clair).
Prompt : "Modifie tous les fichiers nécessaires pour que TOUS les boutons d'alerte de l'application utilisent exactement le code hexadécimal #ff0000."
Exercice 5 : Le changement de framework CSS
Contexte : Vous utilisez du CSS vanilla, vous voulez passer à Tailwind.
Prompt : "Je veux remplacer mon CSS par des classes Tailwind. Commence UNIQUEMENT par analyser le composant Header et montre-moi l'avant/après sans rien modifier physiquement."
Conseils vitaux
La règle d'or de la sauvegarde (Git Commit)
Ne demandez JAMAIS une modification multi-fichiers sans avoir d'abord sauvegardé l'état actuel de votre projet (commit Git). Si l'IA se perd et modifie 12 fichiers de manière erronée, chercher manuellement les erreurs est un cauchemar. Avec Git, vous effacez tout en une seconde et recommencez.
Méfiez-vous de "l'effet papillon"
Changer le nom d'une variable dans un fichier de base de données peut faire planter une interface d'affichage à l'autre bout de l'application. Si vous demandez un renommage, exigez que Codex utilise la fonction "Rechercher et Remplacer" globale du projet.
Tableau récapitulatif des stratégies
| Situation | Fichiers concernés | Bonne stratégie |
|---|---|---|
| Ajout page Contact | HTML, CSS, Routeur | Créer le HTML, puis lier au Routeur, puis styliser. |
| Changer le thème (Dark Mode) | CSS global, Variables, JS | Définir les variables d'abord, puis le script de bascule. |
| Authentification (Login) | HTML, API, Auth.js, Routeur | Séparer la création de l'API et celle de l'interface visuelle. |
| Nouveau menu | Header, CSS, Script mobile | Valider le HTML d'abord, faire le responsive à la fin. |
| Ajout d'une langue (i18n) | Tous les fichiers de texte, Fichiers JSON | Automatiser via un prompt de remplacement massif. |
| Création d'un Blog | Article, Liste, Composants | Créer la structure des données (fictive) avant l'affichage. |
| Refonte Footer | Footer HTML, CSS global | Restreindre la modification au seul composant Footer. |
| Ajout d'une popup | Index, Modal.js, CSS | Demander l'analyse des z-index existants avant d'ajouter. |
| Système de filtre | Filtre.js, Affichage, Données | Valider la logique de tri (console.log) avant l'UI. |
| Panier E-commerce | Cart.js, Header (bulle), Page | Gérer l'état global (le nombre d'articles) d'abord. |
| Animation de chargement | Loader, API Call, CSS | Cibler précisément le délai d'attente réseau. |
| Optimisation SEO | Tous les HTML (Head) | Demander d'ajouter uniquement les balises manquantes. |
| Refonte typographique | CSS global, Variables | Gérer via les variables root pour éviter de toucher au HTML. |
| Tableau de données | Table.js, Pagination.js, CSS | Demander un jeu de fausses données (mock) pour tester. |
| Nettoyage du code | Ensemble du projet | Demander fichier par fichier : "Nettoie uniquement X". |
Foire aux questions
À retenir
Vous avez franchi le cap des projets complexes.
- Une application entière peut être modifiée par Codex, à condition d'avoir une vision claire des conséquences.
- Le prompt "Analyse et propose avant de modifier" est votre meilleur bouclier contre les destructions accidentelles.
- Découper une grande fonctionnalité (ex: Authentification) en 3 ou 4 petits prompts est toujours la meilleure méthode.
- Limitez les "super-pouvoirs" de l'IA en lui interdisant explicitement de toucher à certaines zones du code.
Transition vers le chapitre suivant
Ajouter des fonctionnalités, c'est bien. Mais que faire lorsque le projet ne fonctionne plus et que la console clignote en rouge ?
Vous avez vu comment agir, vous allez maintenant apprendre à réagir. Le chapitre suivant est dédié à l'art fondamental du débogage. Vous allez découvrir comment transformer Codex en un détective privé implacable, capable de traquer et d'exterminer le moindre bug caché au fin fond de vos fichiers.