A Prettier shareable config for projects using Prettier
npm install -D @kkulebaev/prettier-config
# or with yarn
yarn add -D @kkulebaev/prettier-config
# or with pnpm
pnpm add -D @kkulebaev/prettier-config
This is only a shareable configuration. It does not install Prettier or any other part of the tool chain.
Reference it in package.json
using the prettier
property:
{
"name": "my-projects-name",
"prettier": "@kkulebaev/prettier-config",
"devDependencies" : {
"@kkulebaev/prettier-config": "^0.1.0"
}
}
If you don't want to use package.json
, you can use any of the supported
extensions to export a string:
// `.prettierrc.json`
"@kkulebaev/prettier-config"
// `prettier.config.js` or `.prettierrc.js`
module.exports = '@kkulebaev/prettier-config'
This configuration is not intended to be changed, but if you have a setup where modification is required, it is possible. Prettier does not offer an "extends" mechanism as you might be familiar from tools such as ESLint.
To extend a configuration you will need to:
- Import/Require this sharable config from within your own configuration. This means you must be using a JavaScript version of a Prettier configuration file.
- Extend your modification on top of the shared config using something like Object destructuring, Object.assign(), or lodash.merge()
- Export the modified configuration
Prettier uses cosmiconfig for configuration file support. This means you can configure prettier via:
- A
.prettierrc
file, written in YAML or JSON, with optional extensions:.yaml/.yml/.json
.- A
.prettierrc.toml
file, written in TOML (the.toml
extension is required).- A
prettier.config.js
or.prettierrc.js
file that exports an object.- A
"prettier"
key in yourpackage.json
file....
Sharing configurations
Note: This method does not offer a way to extend the configuration to overwrite some properties from the shared configuration. If you need to do that, import the file in a
.prettierrc.js
file and export the modifications, e.g:module.exports = { ...require("@kkulebaev/prettier-config"), semi: false };
For example, if you need to change it so that semicolons are required:
// `prettier.config.js` or `.prettierrc.js`
const prettierConfigStandard = require('@kkulebaev/prettier-config')
const merge = require('lodash.merge')
const modifiedConfig = merge(
{},
prettierConfigStandard,
{
semi: true,
// ... other modified settings here
}
)
module.exports = modifiedConfig