import type { Config, Options } from "prettier"; type Overrides = Readonly<{ excludeFiles?: Array | string; files: Array | string; options?: Options; }>; /** Pour les fichiers PHP. */ const configPhp: Overrides = { files: ["*.php"], options: { braceStyle: "1tbs", parser: "php", phpVersion: "auto", plugins: ["@prettier/plugin-php"], trailingCommaPHP: true, }, }; /** Pour les fichiers XML. */ const configXml: Overrides = { files: ["*.xml"], options: { bracketSameLine: false, parser: "xml", plugins: ["@prettier/plugin-xml"], printWidth: 120, singleAttributePerLine: true, tabWidth: 2, xmlQuoteAttributes: "double", xmlSelfClosingSpace: true, xmlSortAttributesByKey: true, xmlWhitespaceSensitivity: "strict", }, }; export const configClassique: Readonly = { arrowParens: "avoid", bracketSameLine: false, bracketSpacing: true, embeddedLanguageFormatting: "auto", endOfLine: "lf", experimentalOperatorPosition: "start", experimentalTernaries: true, htmlWhitespaceSensitivity: "ignore", jsdocPreferCodeFences: true, jsdocVerticalAlignment: true, overrides: [ // Pour package.json. { files: ["package.json"], options: { plugins: ["prettier-plugin-pkg"], }, }, ], plugins: [ "prettier-plugin-curly", "prettier-plugin-jsdoc", "prettier-plugin-sh", ], printWidth: 120, proseWrap: "never", quoteProps: "as-needed", semi: true, singleAttributePerLine: true, singleQuote: false, tabWidth: 2, trailingComma: "all", tsdoc: true, useTabs: false, }; export const configWordPress: Readonly = { ...configClassique, overrides: [...(configClassique.overrides ?? []), configPhp, configXml], };