Aller au contenu principal

Partager des configurations

Traduction Bêta Non Officielle

Cette page a été traduite par PageTurner AI (bêta). Non approuvée officiellement par le projet. Vous avez trouvé une erreur ? Signaler un problème →

Si vous gérez plusieurs projets différents, il peut être utile d'avoir une configuration partagée utilisable sur tous vos projets plutôt que de copier-coller la même configuration pour chaque projet.

Cette page explique comment créer, publier et utiliser une configuration partageable.

Créer une configuration partageable

Les configurations partageables sont simplement des packages npm qui exportent un unique fichier de configuration Prettier.

Avant de commencer, assurez-vous d'avoir :

Commencez par créer un nouveau package. Nous recommandons d'utiliser un package scopé avec le nom @username/prettier-config.

Un package minimal doit contenir au moins deux fichiers : un package.json pour la configuration du package et un index.js contenant l'objet de configuration Prettier partagé :

prettier-config/
├── index.js
└── package.json

Exemple package.json :

{
"name": "@username/prettier-config",
"version": "1.0.0",
"description": "My personal Prettier config",
"type": "module",
"exports": "./index.js",
"license": "MIT",
"publishConfig": {
"access": "public"
},
"peerDependencies": {
"prettier": ">=3.0.0"
}
}

index.js est l'endroit où vous placez la configuration partagée. Ce fichier exporte simplement une configuration Prettier standard avec la même syntaxe et les mêmes options :

const config = {
trailingComma: "es5",
tabWidth: 4,
singleQuote: true,
};

export default config;

Un exemple de dépôt de configuration partagée est disponible ici.

Publier une configuration partageable

Une fois prêt, vous pouvez publier votre package sur npm :

npm publish

Utiliser une configuration partageable

Vous devez d'abord installer votre configuration publiée, par exemple :

npm install --save-dev @username/prettier-config

Puis vous pouvez la référencer dans votre package.json :

{
"name": "my-cool-library",
"version": "1.0.0",
"prettier": "@username/prettier-config"
}

Si vous ne souhaitez pas utiliser package.json, vous pouvez utiliser n'importe quelle extension supportée pour exporter une chaîne, par exemple .prettierrc :

"@company/prettier-config"

Étendre une configuration partageable

Pour étendre la configuration et surcharger certaines propriétés de la configuration partagée, importez le fichier dans un fichier .prettierrc.mjs et exportez les modifications, par exemple :

import usernamePrettierConfig from "@username/prettier-config";

/**
* @see https://prettier.io/docs/configuration
* @type {import("prettier").Config}
*/
const config = {
...usernamePrettierConfig,
semi: false,
};

export default config;

Autres exemples

Utiliser les annotations de type dans la configuration partagée

Vous pouvez bénéficier de la sécurité de typage et de l'autocomplétion dans votre configuration partagée en utilisant une annotation de type jsdoc :

/**
* @type {import("prettier").Config}
*/
const config = {
trailingComma: "es5",
tabWidth: 4,
semi: false,
singleQuote: true,
};

export default config;

Pour que cela fonctionne, vous devez installer prettier pour le projet.

Après installation, votre fichier package.json devrait ressembler à ceci :

{
"name": "@username/prettier-config",
"version": "1.0.0",
"description": "My personal Prettier config",
"type": "module",
"exports": "./index.js",
"license": "MIT",
"publishConfig": {
"access": "public"
},
"peerDependencies": {
"prettier": ">=3.0.0"
},
+ "devDependencies": {
+ "prettier": "^3.3.3"
+ }
}

Inclure des plugins dans les configurations partageables

Si vous souhaitez utiliser des plugins dans votre configuration partagée, vous devez les déclarer dans le tableau plugin du fichier de configuration et comme dependencies dans package.json :

// index.js
const config = {
singleQuote: true,
plugins: ["prettier-plugin-xml"],
};

export default config;
// package.json
{
"name": "@username/prettier-config",
"version": "1.0.0",
"description": "My personal Prettier config",
"type": "module",
"exports": "./index.js",
"license": "MIT",
"publishConfig": {
"access": "public"
},
+ "dependencies": {
+ "prettier-plugin-xml": "3.4.1"
+ },
"peerDependencies": {
"prettier": ">=3.0.0"
}
}

Un exemple de dépôt est disponible ici

Note : Vous pouvez utiliser peerDependencies au lieu de dependencies. Pour comprendre leurs différences, vous pouvez lire cet article de blog de Domenic Denicola sur les dépendances peer