Skip to content

Instantly share code, notes, and snippets.

@cfigueiroa
Last active June 16, 2023 10:34
Show Gist options
  • Save cfigueiroa/a7b34d8460b78c0930f1bede770b78ce to your computer and use it in GitHub Desktop.
Save cfigueiroa/a7b34d8460b78c0930f1bede770b78ce to your computer and use it in GitHub Desktop.
Ordered Prettier Configuration Schema
{
"$schema": "https://gist.githubusercontent.com/cfigueiroa/a7b34d8460b78c0930f1bede770b78ce/raw/9d8506174ba45892e329eb37733f40b04fd1cd8c/prettierrc.json",
"definitions": {
"optionsDefinition": {
"type": "object",
"properties": {
"printWidth": {
"description": "The line length where Prettier will try wrap.",
"default": 80,
"type": "integer",
"propertyOrder": 1
},
"tabWidth": {
"description": "Number of spaces per indentation level.",
"default": 2,
"type": "integer",
"propertyOrder": 2
},
"useTabs": {
"description": "Indent with tabs instead of spaces.",
"default": false,
"type": "boolean",
"propertyOrder": 3
},
"semi": {
"description": "Print semicolons.",
"default": true,
"type": "boolean",
"propertyOrder": 4
},
"singleQuote": {
"description": "Use single quotes instead of double quotes.",
"default": false,
"type": "boolean",
"propertyOrder": 5
},
"quoteProps": {
"description": "Change when properties in objects are quoted.",
"default": "as-needed",
"oneOf": [
{
"enum": ["as-needed"],
"description": "Only add quotes around object properties where required."
},
{
"enum": ["consistent"],
"description": "If at least one property in an object requires quotes, quote all properties."
},
{
"enum": ["preserve"],
"description": "Respect the input use of quotes in object properties."
}
],
"propertyOrder": 6
},
"jsxSingleQuote": {
"description": "Use single quotes in JSX.",
"default": false,
"type": "boolean",
"propertyOrder": 7
},
"trailingComma": {
"description": "Print trailing commas wherever possible when multi-line.",
"default": "es5",
"oneOf": [
{
"enum": ["es5"],
"description": "Trailing commas where valid in ES5 (objects, arrays, etc.)"
},
{
"enum": ["none"],
"description": "No trailing commas."
},
{
"enum": ["all"],
"description": "Trailing commas wherever possible (including function arguments)."
}
],
"propertyOrder": 8
},
"bracketSpacing": {
"description": "Print spaces between brackets.",
"default": true,
"type": "boolean",
"propertyOrder": 9
},
"bracketSameLine": {
"description": "Put > of opening tags on the last line instead of on a new line.",
"default": false,
"type": "boolean",
"propertyOrder": 10
},
"arrowParens": {
"description": "Include parentheses around a sole arrow function parameter.",
"default": "always",
"oneOf": [
{
"enum": ["always"],
"description": "Always include parens. Example: `(x) => x`"
},
{
"enum": ["avoid"],
"description": "Omit parens when possible. Example: `x => x`"
}
],
"propertyOrder": 11
},
"rangeStart": {
"description": "Format code starting at a given character offset.\nThe range will extend backwards to the start of the first line containing the selected statement.\nThis option cannot be used with --cursor-offset.",
"default": 0,
"type": "integer",
"propertyOrder": 12
},
"rangeEnd": {
"description": "Format code ending at a given character offset (exclusive).\nThe range will extend forwards to the end of the selected statement.\nThis option cannot be used with --cursor-offset.",
"default": null,
"type": "integer",
"propertyOrder": 13
},
"parser": {
"description": "Which parser to use.",
"anyOf": [
{
"enum": ["flow"],
"description": "Flow"
},
{
"enum": ["babel"],
"description": "JavaScript"
},
{
"enum": ["babel-flow"],
"description": "Flow"
},
{
"enum": ["babel-ts"],
"description": "TypeScript"
},
{
"enum": ["typescript"],
"description": "TypeScript"
},
{
"enum": ["acorn"],
"description": "JavaScript"
},
{
"enum": ["espree"],
"description": "JavaScript"
},
{
"enum": ["meriyah"],
"description": "JavaScript"
},
{
"enum": ["css"],
"description": "CSS"
},
{
"enum": ["less"],
"description": "Less"
},
{
"enum": ["scss"],
"description": "SCSS"
},
{
"enum": ["json"],
"description": "JSON"
},
{
"enum": ["json5"],
"description": "JSON5"
},
{
"enum": ["json-stringify"],
"description": "JSON.stringify"
},
{
"enum": ["graphql"],
"description": "GraphQL"
},
{
"enum": ["markdown"],
"description": "Markdown"
},
{
"enum": ["mdx"],
"description": "MDX"
},
{
"enum": ["vue"],
"description": "Vue"
},
{
"enum": ["yaml"],
"description": "YAML"
},
{
"enum": ["glimmer"],
"description": "Ember / Handlebars"
},
{
"enum": ["html"],
"description": "HTML"
},
{
"enum": ["angular"],
"description": "Angular"
},
{
"enum": ["lwc"],
"description": "Lightning Web Components"
},
{
"type": "string",
"description": "Custom parser"
}
],
"propertyOrder": 14
},
"filepath": {
"description": "Specify the input filepath. This will be used to do parser inference.",
"type": "string",
"propertyOrder": 15
},
"requirePragma": {
"description": "Require either '@prettier' or '@format' to be present in the file's first docblock comment\nin order for it to be formatted.",
"default": false,
"type": "boolean",
"propertyOrder": 16
},
"insertPragma": {
"description": "Insert @format pragma into file's first docblock comment.",
"default": false,
"type": "boolean",
"propertyOrder": 17
},
"proseWrap": {
"description": "How to wrap prose.",
"default": "preserve",
"oneOf": [
{
"enum": ["always"],
"description": "Wrap prose if it exceeds the print width."
},
{
"enum": ["never"],
"description": "Do not wrap prose."
},
{
"enum": ["preserve"],
"description": "Wrap prose as-is."
}
],
"propertyOrder": 18
},
"htmlWhitespaceSensitivity": {
"description": "How to handle whitespaces in HTML.",
"default": "css",
"oneOf": [
{
"enum": ["css"],
"description": "Respect the default value of CSS display property."
},
{
"enum": ["strict"],
"description": "Whitespaces are considered sensitive."
},
{
"enum": ["ignore"],
"description": "Whitespaces are considered insensitive."
}
],
"propertyOrder": 19
},
"vueIndentScriptAndStyle": {
"description": "Indent script and style tags in Vue files.",
"default": false,
"type": "boolean",
"propertyOrder": 20
},
"endOfLine": {
"description": "Which end of line characters to apply.",
"default": "lf",
"oneOf": [
{
"enum": ["lf"],
"description": "Line Feed only (\\n), common on Linux and macOS as well as inside git repos"
},
{
"enum": ["crlf"],
"description": "Carriage Return + Line Feed characters (\\r\\n), common on Windows"
},
{
"enum": ["cr"],
"description": "Carriage Return character only (\\r), used very rarely"
},
{
"enum": ["auto"],
"description": "Maintain existing\n(mixed values within one file are normalised by looking at what's used after the first line)"
}
],
"propertyOrder": 21
},
"embeddedLanguageFormatting": {
"description": "Control how Prettier formats quoted code embedded in the file.",
"default": "auto",
"oneOf": [
{
"enum": ["auto"],
"description": "Format embedded code if Prettier can automatically identify it."
},
{
"enum": ["off"],
"description": "Never automatically format embedded code."
}
],
"propertyOrder": 22
},
"singleAttributePerLine": {
"description": "Enforce single attribute per line in HTML, Vue and JSX.",
"default": false,
"type": "boolean",
"propertyOrder": 23
},
"cursorOffset": {
"description": "Print (to stderr) where a cursor at the given position would move to after formatting.\nThis option cannot be used with --range-start and --range-end.",
"default": -1,
"type": "integer",
"propertyOrder": 24
},
"editorconfig": {
"description": "Whether parse the .editorconfig file in your project and convert its properties to the corresponding Prettier configuration. This configuration will be overridden by .prettierrc, etc.",
"default": false,
"type": "boolean",
"propertyOrder": 25
},
"pluginSearchDirs": {
"description": "Custom directory that contains prettier plugins in node_modules subdirectory.\nOverrides default behavior when plugins are searched relatively to the location of Prettier.\nMultiple values are accepted.",
"default": [],
"oneOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"enum": [false],
"description": "Disable plugin autoloading."
}
],
"propertyOrder": 26
},
"plugins": {
"description": "Add a plugin. Multiple plugins can be passed as separate `--plugin`s.",
"default": [],
"type": "array",
"items": {
"type": "string"
},
"propertyOrder": 27
}
}
},
"overridesDefinition": {
"type": "object",
"properties": {
"overrides": {
"type": "array",
"description": "Provide a list of patterns to override prettier configuration.",
"items": {
"type": "object",
"required": ["files"],
"properties": {
"files": {
"description": "Include these files in this override.",
"oneOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
]
},
"excludeFiles": {
"description": "Exclude these files from this override.",
"oneOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
]
},
"options": {
"type": "object",
"description": "The options to apply for this override.",
"$ref": "#/definitions/optionsDefinition"
}
},
"additionalProperties": false
}
}
}
}
},
"id": "https://gist.githubusercontent.com/cfigueiroa/a7b34d8460b78c0930f1bede770b78ce/raw/9d8506174ba45892e329eb37733f40b04fd1cd8c/prettierrc.json",
"oneOf": [
{
"type": "object",
"allOf": [
{
"$ref": "#/definitions/optionsDefinition"
},
{
"$ref": "#/definitions/overridesDefinition"
}
]
},
{
"type": "string"
}
],
"title": "#1 .prettierrc"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment