4.0 KiB
id | title | original_id |
---|---|---|
version-stable-configuration | Configuration File | 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.
The configuration file will be resolved starting from the location of the file being formatted, and searching up the file tree until a config file is (or isn't) found.
The options to the configuration file are the same as the API options.
Basic Configuration
JSON:
{
"trailingComma": "es5",
"tabWidth": 4,
"semi": false,
"singleQuote": true
}
JS:
// prettier.config.js or .prettierrc.js
module.exports = {
trailingComma: "es5",
tabWidth: 4,
semi: false,
singleQuote: true
};
YAML:
# .prettierrc or .prettierrc.yaml
trailingComma: "es5"
tabWidth: 4
semi: false
singleQuote: true
TOML:
# .prettierrc.toml
trailingComma = "es5"
tabWidth = 4
semi = false
singleQuote = true
Configuration Overrides
Prettier borrows eslint's override format. This allows you to apply configuration to specific files.
JSON:
{
"semi": false,
"overrides": [
{
"files": "*.test.js",
"options": {
"semi": true
}
}
]
}
YAML:
semi: false
overrides:
- files: "*.test.js"
options:
semi: true
files
is required for each override, and may be a string or array of strings. excludeFiles
may be optionally provided to exclude files for a given rule, and may also be a string or array of strings.
Sharing configurations
Sharing a Prettier configuration is simple: just publish a module that exports a configuration object, say @company/prettier-config
, and reference it in your package.json
:
{
"name": "my-cool-library",
"version": "9000.0.1",
"prettier": "@company/prettier-config"
}
If you don't want to use package.json
, you can use any of the supported extensions to export a string, e.g. .prettierrc.json
:
"@company/prettier-config"
An example configuration repository is available here.
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("@company/prettier-config"), semi: false };
Setting the parser option
By default, Prettier automatically infers which parser to use based on the input file extension. Combined with overrides
you can teach Prettier how to parse files it does not recognize.
For example, to get Prettier to format its own .prettierrc
file, you can do:
{
"overrides": [
{
"files": ".prettierrc",
"options": { "parser": "json" }
}
]
}
You can also switch to the flow
parser instead of the default babel
for .js files:
{
"overrides": [
{
"files": "*.js",
"options": {
"parser": "flow"
}
}
]
}
Note: Never put the parser
option at the top level of your configuration. Only use it inside overrides
. Otherwise you effectively disable Prettier's automatic file extension based parser inference. This forces Prettier to use the parser you specified for all types of files – even when it doesn't make sense, such as trying to parse a CSS file as JavaScript.
Configuration Schema
If you'd like a JSON schema to validate your configuration, one is available here: http://json.schemastore.org/prettierrc.