Aller au contenu

Prettier : ignorer et surcharger

Même syntaxe que .gitignore, à la racine du projet :

# fichiers produits par le build
dist/
build/
coverage/
.astro/
.next/
# dépendances et verrouillage
node_modules/
package-lock.json
pnpm-lock.yaml
# fichiers générés ou tiers
public/vendor/
*.min.js
src/generated/

Par défaut, Prettier ignore déjà node_modules/ et lit aussi .gitignore (depuis la version 3). Le .prettierignore ajoute ce que Git suit mais qu’on ne veut pas formater (fichiers de verrouillage, bibliothèques copiées, sorties générées versionnées).

Fenêtre de terminal
npx prettier --check . --ignore-path .prettierignore --ignore-path .gitignore

L’option --ignore-path (répétable) précise les fichiers d’exclusion à utiliser.

Fenêtre de terminal
npx prettier --check "src/**/*.js" --log-level debug 2>&1 | grep -i ignore
npx prettier --file-info src/generated/api.js
{ "ignored": true, "inferredParser": null }

--file-info indique si le fichier est ignoré et quel analyseur serait utilisé.

{
"singleQuote": true,
"printWidth": 100,
"overrides": [
{ "files": "*.md", "options": { "proseWrap": "preserve" } },
{ "files": ["*.yml", "*.yaml"], "options": { "singleQuote": false } },
{ "files": "package.json", "options": { "printWidth": 200 } },
{ "files": "*.css", "options": { "printWidth": 120 } },
{ "files": "legacy/**/*.js", "options": { "semi": false } }
]
}
Clé Rôle
files Motif (ou liste) de fichiers concernés (glob)
excludeFiles Motifs exclus de la surcharge
options Options appliquées à ces fichiers (écrasent les options générales)

Les surcharges s’appliquent dans l’ordre : la dernière qui correspond l’emporte.

Pour un fichier à l’extension inhabituelle :

{
"overrides": [
{ "files": ".eslintrc", "options": { "parser": "json" } },
{ "files": "*.tpl.html", "options": { "parser": "html" } },
{ "files": "Caddyfile", "options": { "parser": "none" } }
]
}

Prettier ne connaît pas tous les fichiers (un Caddyfile, par exemple) : les laisser de côté dans .prettierignore plutôt que de forcer un analyseur inadapté.

Fenêtre de terminal
npx prettier --write src/ tests/ scripts/
npx prettier --write "**/*.{js,ts,tsx,css,md,json}"
git diff --name-only --diff-filter=ACMR origin/main | xargs npx prettier --write

La dernière commande ne formate que les fichiers modifiés par rapport à la branche principale (sans toucher au reste : utile sur un projet qu’on migre progressivement). En routine, c’est le rôle de lint-staged (Intégration continue et hooks).

Fichier Traitement
package-lock.json, pnpm-lock.yaml, yarn.lock Ignorer (générés par le gestionnaire de paquets)
dist/, build/, .next/, .astro/ Ignorer
CHANGELOG.md produit par un outil Ignorer, ou laisser formater si l’outil produit un format stable
Fichiers copiés de projets tiers Ignorer
Fichiers de configuration (package.json, tsconfig.json) Formater
// prettier-ignore
const table = {
a: 1,
bcd: 2,
};
/* prettier-ignore */
.grille { grid-template-areas: "a b" "c d"; }
# prettier-ignore
cle: [ 1,2,3 ]

Plage en Markdown :

<!-- prettier-ignore-start -->
| col 1 | col 2 |
|-------|-------|
| a | b |
<!-- prettier-ignore-end -->

Quand un autre outil réécrit le fichier (générateur, npm version, formateur de package.json), Prettier et lui peuvent se contredire à chaque exécution. Choisir un seul responsable du format de ce fichier : soit l’ignorer dans Prettier, soit aligner ses options.

Symptôme Piste
Un fichier ignoré est quand même formaté Motif de .prettierignore incorrect (chemin relatif à la racine), --ignore-path différent
Un dossier devrait être ignoré mais est analysé dist/ avec la barre finale, ou motif **/dist/**
overrides sans effet Motif files ne correspondant pas (chemin relatif au fichier de configuration), ordre des surcharges
[error] No files matching the pattern were found Motif entre guillemets pour que Prettier (et non le shell) l’interprète ; vérifier le chemin
Prettier reformate package-lock.json L’ajouter à .prettierignore
Fichiers de node_modules formatés Motif de la ligne de commande qui l’inclut explicitement (**/*.js) ; Prettier ignore ce dossier par défaut seulement si le motif ne le cible pas

Ubuntu 24.04 et 26.04 : différences à connaître

Section intitulée « Ubuntu 24.04 et 26.04 : différences à connaître »

Aucune.