Si l'enregistrement d'un fichier généré dans VS Code sur votre Mac modifie continuellement son contenu, identifiez d'abord quel formateur est actif. Le paramètre editor.formatOnSave de VS Code applique le formatage lorsqu'un fichier est enregistré, mais VS Code ne fournit pas de modèle de chemin intégré permettant d'exempter certains fichiers de ce réglage. Pour un formateur comme Prettier, utilisez son propre fichier d'exclusion ; sinon, désactivez le formatage à l'enregistrement à une portée adaptée aux fichiers que vous devez protéger.

Identifier ce qui modifie le fichier

VS Code peut formater à l'enregistrement via editor.formatOnSave, et les extensions de langage peuvent fournir des formateurs. Une action de code (Code Action) exécutée lors de l'enregistrement, telle que l'organisation des imports, dépend d'un paramètre distinct et peut également altérer le contenu du fichier. La documentation d'édition de VS Code décrit le formatage à l'enregistrement ; son guide sur les Code Actions à l'enregistrement couvre les actions exécutées lors de la sauvegarde.

Pour cerner la cause, ouvrez le fichier généré, vérifiez son mode de langage dans la barre d'état et recherchez formatOnSave ainsi que codeActionsOnSave dans les Paramètres. Le filtre @modified dans les Paramètres peut vous aider à repérer les valeurs configurées. Si le fichier change alors que le formatage est désactivé, inspectez les extensions installées et les scripts du projet : un générateur ou une autre action à l'enregistrement peut en être la cause. Désactiver le formatage n'empêchera pas un outil indépendant de réécrire le fichier.

Exclure les chemins générés lors de l'utilisation de Prettier

Si Prettier est le formateur utilisé, ajoutez le chemin généré au fichier .prettierignore à la racine du projet. Par exemple, pour ignorer les fichiers générés sous src/generated, utilisez cette entrée :

src/generated/

Prettier documente .prettierignore comme son mécanisme d'exclusion de fichiers et indique que les intégrations pour éditeurs peuvent l'utiliser. Ses motifs suivent la syntaxe de Git-ignore. C'est l'option la plus ciblée lorsque vous souhaitez que le formatage à l'enregistrement continue de fonctionner pour les autres fichiers gérés par Prettier. Vérifiez que le formateur sélectionné pour ce fichier est bien Prettier ; un autre formateur pourrait appliquer des règles ou des mécanismes d'exclusion différents. Prettier : Ignoring Code

Désactiver le formatage à une portée VS Code appropriée

Sur Mac, appuyez sur ⇧⌘P et exécutez Préférences : Ouvrir les paramètres utilisateur (JSON) pour une modification globale, ou Préférences : Ouvrir les paramètres de l'espace de travail (JSON) pour n'affecter que le projet actuel. Le fichier de l'espace de travail est stocké dans le dossier .vscode du projet. VS Code documente ces deux portées de paramètres ainsi que leurs raccourcis sur Mac dans Paramètres utilisateur et de l'espace de travail.

Pour interrompre le formatage à l'enregistrement uniquement dans cet espace de travail, ajoutez le paramètre ci-dessous à son objet JSON existant. Conservez les autres paramètres déjà présents et ajoutez une virgule si nécessaire :

{
  "editor.formatOnSave": false
}

Pour une exception propre à un langage, appliquez plutôt le paramètre à ce langage. Remplacez typescript par l'identifiant de langage réel du fichier dans VS Code, que vous pouvez consulter depuis la barre d'état :

{
  "[typescript]": {
    "editor.formatOnSave": false
  }
}

Cela désactive le formatage à l'enregistrement pour chaque fichier de ce langage à la portée choisie, et pas uniquement pour les chemins générés. Les paramètres peuvent également être écrasés par des portées plus spécifiques ; par conséquent, si le fichier continue d'être modifié, recherchez @modified et inspectez à la fois les paramètres utilisateur et ceux de l'espace de travail, ainsi que les blocs spécifiques à un langage. La référence des paramètres de VS Code détaille les paramètres spécifiques aux langages et leur ordre de priorité.

Vérifier les actions à l'enregistrement séparément

Si le formatage est déjà désactivé mais que l'enregistrement réorganise toujours les imports ou applique des corrections, examinez editor.codeActionsOnSave. Ce paramètre contrôle les actions telles que l'organisation des imports et la correction automatique générale (fix-all). Supprimez ou modifiez uniquement l'action à l'origine de la réécriture ; désactiver entièrement ce paramètre peut aussi supprimer des comportements utiles lors de l'enregistrement. La documentation de VS Code sur les Code Actions à l'enregistrement détaille les options prises en charge.

N'utilisez pas files.exclude comme mesure de protection pour le formatage : VS Code le documente comme un paramètre de visibilité dans l'Explorateur, et non comme un moyen d'empêcher un formateur de modifier un fichier. Si le formateur ne possède pas de fonctionnalité d'exclusion basée sur le chemin et que seuls quelques fichiers générés sont concernés, la solution pratique dans VS Code consiste à désactiver le formatage à l'enregistrement pour leur langage ou leur espace de travail, puis à formater manuellement les fichiers standard à l'aide de Mettre en forme le document (⇧⌥F) au besoin. VS Code documente cette commande dans Édition de base.

Pour les fichiers générés qui doivent rester strictement identiques à l'octet près, privilégiez le mécanisme d'exclusion documenté propre au formateur lorsqu'il existe. Sinon, utilisez la portée de paramètre VS Code la plus restreinte possible, puis enregistrez un fichier généré représentatif et examinez le diff pour déterminer quel comportement est en cause.

Sources