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.
## 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
- [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;
options?: Options;
}>;
declare const configIni: Overrides;
declare const configJson: ReadonlyArray<Overrides>;
/** Pour les fichiers PHP. */
declare const configPhp: Overrides;
/** Pour les fichiers XML. */
@ -13,4 +15,4 @@ declare const configXml: Overrides;
declare const configClassique: Readonly<Config>;
declare const configWordPress: Readonly<Config>;
//#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
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. */
const configPhp = {
files: ["*.php"],
options: {
braceStyle: "1tbs",
parser: "php",
phpVersion: "auto",
plugins: ["@prettier/plugin-php"],
trailingCommaPHP: true
}
files: ["*.php"],
options: {
braceStyle: "1tbs",
parser: "php",
phpVersion: "auto",
plugins: ["@prettier/plugin-php"],
trailingCommaPHP: true,
},
};
/** Pour les fichiers XML. */
const configXml = {
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"
}
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",
},
};
const configClassique = {
arrowParens: "avoid",
bracketSameLine: false,
bracketSpacing: true,
embeddedLanguageFormatting: "auto",
endOfLine: "lf",
experimentalOperatorPosition: "start",
experimentalTernaries: true,
htmlWhitespaceSensitivity: "ignore",
jsdocPreferCodeFences: true,
jsdocVerticalAlignment: true,
overrides: [{
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
arrowParens: "avoid",
bracketSameLine: false,
bracketSpacing: true,
embeddedLanguageFormatting: "auto",
endOfLine: "lf",
experimentalOperatorPosition: "start",
experimentalTernaries: true,
htmlWhitespaceSensitivity: "ignore",
iniSpaceAroundEquals: false,
jsdocPreferCodeFences: true,
jsdocVerticalAlignment: true,
overrides: [configIni, ...configJson],
plugins: ["prettier-plugin-curly", "prettier-plugin-ini", "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,
};
const configWordPress = {
...configClassique,
overrides: [
...configClassique.overrides ?? [],
configPhp,
configXml
]
...configClassique,
overrides: [...(configClassique.overrides ?? []), configIni, ...configJson, configPhp, configXml],
};
//#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;
}>;
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. */
export const configPhp: Overrides = {
files: ["*.php"],
@ -44,22 +68,11 @@ export const configClassique: Readonly<Config> = {
experimentalOperatorPosition: "start",
experimentalTernaries: true,
htmlWhitespaceSensitivity: "ignore",
iniSpaceAroundEquals: false,
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",
],
overrides: [configIni, ...configJson],
plugins: ["prettier-plugin-curly", "prettier-plugin-ini", "prettier-plugin-jsdoc", "prettier-plugin-sh"],
printWidth: 120,
proseWrap: "never",
quoteProps: "as-needed",
@ -74,5 +87,5 @@ export const configClassique: Readonly<Config> = {
export const configWordPress: Readonly<Config> = {
...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"]
# Formate le code.
formate:
format:
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.
maj-dependances:
update:
bun update
# Analyse le code TypeScript avec ESLint.
analyse-code:
lint-js:
bun eslint
# Analyse le code mort et les dépendances inutilisées du projet.
analyse-code-mort:
find-dead-code:
bun knip
bun knip --production
# Compile le projet.
compile:
build:
bun tsdown --attw --publint
# Nettoie le dosiser de compilation.
nettoie:
rm -rfv dist
# Nettoie le projet.
clean:
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:
publish:
npm publish --registry http://localhost:4873

View file

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

View file

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

View file

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