This commit is contained in:
gcch 2025-11-11 13:34:13 +01:00
commit d83744ed6e
10 changed files with 523 additions and 613 deletions

View file

@ -2,13 +2,6 @@
Configurations _Prettier_ partageables. Configurations _Prettier_ partageables.
## TODO
- [prettier-plugin-sort-json](https://github.com/Gudahtt/prettier-plugin-sort-json).
- [prettier-plugin-ini](https://github.com/kddnewton/prettier-plugin-ini).
- [prettier-plugin-sql](https://github.com/un-ts/prettier/blob/master/packages/sql/README.md).
- prettier-plugin-nginx.
## Inspirations ## Inspirations
- [u3u/prettier-config](https://github.com/u3u/prettier-config). - [u3u/prettier-config](https://github.com/u3u/prettier-config).

890
bun.lock

File diff suppressed because it is too large Load diff

4
dist/index.d.mts vendored
View file

@ -6,6 +6,8 @@ type Overrides = Readonly<{
files: Array<string> | string; files: Array<string> | string;
options?: Options; options?: Options;
}>; }>;
declare const configIni: Overrides;
declare const configJson: ReadonlyArray<Overrides>;
/** Pour les fichiers PHP. */ /** Pour les fichiers PHP. */
declare const configPhp: Overrides; declare const configPhp: Overrides;
/** Pour les fichiers XML. */ /** Pour les fichiers XML. */
@ -13,4 +15,4 @@ declare const configXml: Overrides;
declare const configClassique: Readonly<Config>; declare const configClassique: Readonly<Config>;
declare const configWordPress: Readonly<Config>; declare const configWordPress: Readonly<Config>;
//#endregion //#endregion
export { configClassique, configPhp, configWordPress, configXml }; export { configClassique, configIni, configJson, configPhp, configWordPress, configXml };

122
dist/index.mjs vendored
View file

@ -1,70 +1,78 @@
//#region index.ts //#region index.ts
const configIni = {
files: [".npmrc", ".env", ".env.*"],
options: { parser: "ini" },
};
const configJson = [
{
files: ["*.json"],
excludeFiles: ["package.json"],
options: {
plugins: ["prettier-plugin-sort-json"],
jsonRecursiveSort: true,
},
},
{
files: ["package.json"],
options: { plugins: ["prettier-plugin-pkg"] },
},
];
/** Pour les fichiers PHP. */ /** Pour les fichiers PHP. */
const configPhp = { const configPhp = {
files: ["*.php"], files: ["*.php"],
options: { options: {
braceStyle: "1tbs", braceStyle: "1tbs",
parser: "php", parser: "php",
phpVersion: "auto", phpVersion: "auto",
plugins: ["@prettier/plugin-php"], plugins: ["@prettier/plugin-php"],
trailingCommaPHP: true trailingCommaPHP: true,
} },
}; };
/** Pour les fichiers XML. */ /** Pour les fichiers XML. */
const configXml = { const configXml = {
files: ["*.xml"], files: ["*.xml"],
options: { options: {
bracketSameLine: false, bracketSameLine: false,
parser: "xml", parser: "xml",
plugins: ["@prettier/plugin-xml"], plugins: ["@prettier/plugin-xml"],
printWidth: 120, printWidth: 120,
singleAttributePerLine: true, singleAttributePerLine: true,
tabWidth: 2, tabWidth: 2,
xmlQuoteAttributes: "double", xmlQuoteAttributes: "double",
xmlSelfClosingSpace: true, xmlSelfClosingSpace: true,
xmlSortAttributesByKey: true, xmlSortAttributesByKey: true,
xmlWhitespaceSensitivity: "strict" xmlWhitespaceSensitivity: "strict",
} },
}; };
const configClassique = { const configClassique = {
arrowParens: "avoid", arrowParens: "avoid",
bracketSameLine: false, bracketSameLine: false,
bracketSpacing: true, bracketSpacing: true,
embeddedLanguageFormatting: "auto", embeddedLanguageFormatting: "auto",
endOfLine: "lf", endOfLine: "lf",
experimentalOperatorPosition: "start", experimentalOperatorPosition: "start",
experimentalTernaries: true, experimentalTernaries: true,
htmlWhitespaceSensitivity: "ignore", htmlWhitespaceSensitivity: "ignore",
jsdocPreferCodeFences: true, iniSpaceAroundEquals: false,
jsdocVerticalAlignment: true, jsdocPreferCodeFences: true,
overrides: [{ jsdocVerticalAlignment: true,
files: ["package.json"], overrides: [configIni, ...configJson],
options: { plugins: ["prettier-plugin-pkg"] } plugins: ["prettier-plugin-curly", "prettier-plugin-ini", "prettier-plugin-jsdoc", "prettier-plugin-sh"],
}], printWidth: 120,
plugins: [ proseWrap: "never",
"prettier-plugin-curly", quoteProps: "as-needed",
"prettier-plugin-jsdoc", semi: true,
"prettier-plugin-sh" singleAttributePerLine: true,
], singleQuote: false,
printWidth: 120, tabWidth: 2,
proseWrap: "never", trailingComma: "all",
quoteProps: "as-needed", tsdoc: true,
semi: true, useTabs: false,
singleAttributePerLine: true,
singleQuote: false,
tabWidth: 2,
trailingComma: "all",
tsdoc: true,
useTabs: false
}; };
const configWordPress = { const configWordPress = {
...configClassique, ...configClassique,
overrides: [ overrides: [...(configClassique.overrides ?? []), configIni, ...configJson, configPhp, configXml],
...configClassique.overrides ?? [],
configPhp,
configXml
]
}; };
//#endregion //#endregion
export { configClassique, configPhp, configWordPress, configXml }; export { configClassique, configIni, configJson, configPhp, configWordPress, configXml };

View file

@ -1,3 +0,0 @@
{
"extends": "node_modules/@gcch/configuration-dprint/dprint.json"
}

View file

@ -6,6 +6,30 @@ type Overrides = Readonly<{
options?: Options; options?: Options;
}>; }>;
export const configIni: Overrides = {
files: [".npmrc", ".env", ".env.*"],
options: { parser: "ini" },
};
export const configJson: ReadonlyArray<Overrides> = [
// Pour le tri des clés des fichiers JSON.
{
files: ["*.json"],
excludeFiles: ["package.json"],
options: {
plugins: ["prettier-plugin-sort-json"],
jsonRecursiveSort: true,
},
},
// Pour package.json.
{
files: ["package.json"],
options: {
plugins: ["prettier-plugin-pkg"],
},
},
];
/** Pour les fichiers PHP. */ /** Pour les fichiers PHP. */
export const configPhp: Overrides = { export const configPhp: Overrides = {
files: ["*.php"], files: ["*.php"],
@ -44,22 +68,11 @@ export const configClassique: Readonly<Config> = {
experimentalOperatorPosition: "start", experimentalOperatorPosition: "start",
experimentalTernaries: true, experimentalTernaries: true,
htmlWhitespaceSensitivity: "ignore", htmlWhitespaceSensitivity: "ignore",
iniSpaceAroundEquals: false,
jsdocPreferCodeFences: true, jsdocPreferCodeFences: true,
jsdocVerticalAlignment: true, jsdocVerticalAlignment: true,
overrides: [ overrides: [configIni, ...configJson],
// Pour package.json. plugins: ["prettier-plugin-curly", "prettier-plugin-ini", "prettier-plugin-jsdoc", "prettier-plugin-sh"],
{
files: ["package.json"],
options: {
plugins: ["prettier-plugin-pkg"],
},
},
],
plugins: [
"prettier-plugin-curly",
"prettier-plugin-jsdoc",
"prettier-plugin-sh",
],
printWidth: 120, printWidth: 120,
proseWrap: "never", proseWrap: "never",
quoteProps: "as-needed", quoteProps: "as-needed",
@ -74,5 +87,5 @@ export const configClassique: Readonly<Config> = {
export const configWordPress: Readonly<Config> = { export const configWordPress: Readonly<Config> = {
...configClassique, ...configClassique,
overrides: [...(configClassique.overrides ?? []), configPhp, configXml], overrides: [...(configClassique.overrides ?? []), configIni, ...configJson, configPhp, configXml],
}; };

View file

@ -1,31 +1,38 @@
set shell := ["/usr/bin/fish", "-c"] set shell := ["/usr/bin/fish", "-c"]
# Formate le code. # Formate le code.
formate: format:
bun prettier --cache --cache-location ".cache/prettiercache" --ignore-unknown --parallel-workers 8 --write . bun prettier --cache --cache-location ".cache/prettiercache" --ignore-unknown --parallel-workers 8 --write .
dprint fmt dprint fmt --config ~/.config/dprint/dprint.jsonc
# Met à jour les dépendances NPM. # Met à jour les dépendances NPM.
maj-dependances: update:
bun update bun update
# Analyse le code TypeScript avec ESLint. # Analyse le code TypeScript avec ESLint.
analyse-code: lint-js:
bun eslint bun eslint
# Analyse le code mort et les dépendances inutilisées du projet. # Analyse le code mort et les dépendances inutilisées du projet.
analyse-code-mort: find-dead-code:
bun knip bun knip
bun knip --production bun knip --production
# Compile le projet. # Compile le projet.
compile: build:
bun tsdown --attw --publint bun tsdown --attw --publint
# Nettoie le dosiser de compilation. # Nettoie le projet.
nettoie: clean:
rm -rfv dist rm -rf .cache/
rm -rf bun.lock
rm -rf node_modules/
rm -rfv dist/
# Nettoie le dossier de cache.
clean-cache:
rm -rf .cache/
# Publie le paquet sur le registre local. # Publie le paquet sur le registre local.
publie: publish:
npm publish --registry http://localhost:4873 npm publish --registry http://localhost:4873

View file

@ -1,6 +1,6 @@
{ {
"name": "@gcch/configuration-prettier", "name": "@gcch/configuration-prettier",
"version": "0.0.10", "version": "0.0.11",
"type": "module", "type": "module",
"description": "Configuration Prettier partageable pour gcch.", "description": "Configuration Prettier partageable pour gcch.",
"main": "./dist/index.mjs", "main": "./dist/index.mjs",
@ -10,32 +10,29 @@
".": "./dist/index.mjs", ".": "./dist/index.mjs",
"./package.json": "./package.json" "./package.json": "./package.json"
}, },
"files": [ "files": ["dist"],
"dist"
],
"peerDependencies": { "peerDependencies": {
"prettier": "^4.0.0-alpha.12" "prettier": "^4.0.0-alpha.13"
}, },
"dependencies": { "dependencies": {
"@prettier/plugin-php": "^0.24.0", "@prettier/plugin-php": "^0.24.0",
"@prettier/plugin-xml": "^3.4.2", "@prettier/plugin-xml": "^3.4.2",
"prettier": "^4.0.0-alpha.12", "prettier": "^3.8.1",
"prettier-plugin-curly": "^0.4.0", "prettier-plugin-curly": "^0.4.1",
"prettier-plugin-jsdoc": "^1.5.0", "prettier-plugin-ini": "^1.3.0",
"prettier-plugin-jsdoc": "^1.8.0",
"prettier-plugin-pkg": "^0.21.2", "prettier-plugin-pkg": "^0.21.2",
"prettier-plugin-sh": "^0.18.0" "prettier-plugin-sh": "^0.18.0",
"prettier-plugin-sort-json": "^4.2.0"
}, },
"devDependencies": { "devDependencies": {
"@arethetypeswrong/core": "^0.18.2", "@arethetypeswrong/core": "^0.18.2",
"@gcch/configuration-dprint": "latest", "@gcch/configuration-eslint": "git+https://git.gcch.fr/gcch/configuration-eslint",
"@gcch/configuration-eslint": "^0.0.9", "eslint": "^10.0.3",
"eslint": "^9.39.1", "knip": "^5.86.0",
"knip": "^5.67.1", "publint": "^0.3.18",
"publint": "^0.3.15", "tsdown": "^0.21.2",
"tsdown": "^0.16.0", "typescript": "^6.0.0-dev.20260312"
"typescript": "^6.0.0-dev.20251104"
}, },
"trustedDependencies": [ "trustedDependencies": ["oxc-resolver"]
"oxc-resolver"
]
} }

View file

@ -1,5 +1,5 @@
import { configClassique } from "./index.js"; import { configWordPress } from "./dist/index.mjs";
export default { export default {
...configClassique, ...configWordPress,
}; };

View file

@ -5,6 +5,7 @@ export default defineConfig({
dts: { oxc: true, parallel: true }, dts: { oxc: true, parallel: true },
entry: ["./index.ts"], entry: ["./index.ts"],
minify: false, minify: false,
nodeProtocol: true,
platform: "node", platform: "node",
sourcemap: false, sourcemap: false,
target: "esnext", target: "esnext",