Spec-Zone.ru › Prettier

Файл конфигурации

Вы можете настроить Prettier с помощью (в порядке приоритета):

  • Ключа "prettier" в файле package.json или файла package.yaml.
  • Файла .prettierrc в формате JSON или YAML.
  • Файла .prettierrc.json, .prettierrc.yml, .prettierrc.yaml или .prettierrc.json5.
  • Файла .prettierrc.js, prettier.config.js, .prettierrc.ts или prettier.config.ts, который экспортирует объект с помощью export default или module.exports (зависит от значения type в файле package.json).
  • Файла .prettierrc.mjs, prettier.config.mjs, .prettierrc.mts или prettier.config.mts, который экспортирует объект с помощью export default.
  • Файла .prettierrc.cjs, prettier.config.cjs, .prettierrc.cts или prettier.config.cts, который экспортирует объект с помощью module.exports.
  • Файла .prettierrc.toml.
информация

Для поддержки файлов конфигурации TypeScript требуется дополнительная настройка

Файл конфигурации будет найден начиная с расположения форматируемого файла с последующим поиском вверх по дереву каталогов, пока файл конфигурации не будет найден (или пока поиск не завершится безрезультатно).

Prettier намеренно не поддерживает глобальную конфигурацию. Это необходимо, чтобы при копировании проекта на другой компьютер Prettier работал так же. В противном случае Prettier не смог бы гарантировать, что все участники команды получают одинаковые согласованные результаты.

Параметры, которые можно использовать в файле конфигурации, совпадают с параметрами API.

Файлы конфигурации TypeScript

Для поддержки TypeScript требуется Node.js>=22.6.0, а для запуска Node.js до версии v24.3.0 необходимо --experimental-strip-types.

node --experimental-strip-types node_modules/prettier/bin/prettier.cjs . --write

или

NODE_OPTIONS="--experimental-strip-types" prettier . --write

Базовая конфигурация

JSON:

{
  "trailingComma": "es5",
  "tabWidth": 4,
  "semi": false,
  "singleQuote": true
}

JS (модули ES):

// prettier.config.js, .prettierrc.js, prettier.config.mjs, or .prettierrc.mjs

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

export default config;

JS (CommonJS):

// prettier.config.js, .prettierrc.js, prettier.config.cjs, or .prettierrc.cjs

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

module.exports = config;

TypeScript (модули ES):

// prettier.config.ts, .prettierrc.ts, prettier.config.mts, or .prettierrc.mts

import { type Config } from "prettier";

const config: Config = {
  trailingComma: "none",
};

export default config;

TypeScript (CommonJS):

// prettier.config.ts, .prettierrc.ts, prettier.config.cts, or .prettierrc.cts

import { type Config } from "prettier";

const config: Config = {
  trailingComma: "none",
};

module.exports = config;

YAML:

# .prettierrc or .prettierrc.yaml
trailingComma: "es5"
tabWidth: 4
semi: false
singleQuote: true

TOML:

# .prettierrc.toml
trailingComma = "es5"
tabWidth = 4
semi = false
singleQuote = true

Переопределения конфигурации

Переопределения позволяют задавать разные конфигурации для определённых расширений файлов, папок и отдельных файлов.

JSON:

{
  "semi": false,
  "overrides": [
    {
      "files": "*.test.js",
      "options": {
        "semi": true
      }
    },
    {
      "files": ["*.html", "legacy/**/*.js"],
      "options": {
        "tabWidth": 4
      }
    }
  ]
}

YAML:

semi: false
overrides:
  - files: "*.test.js"
    options:
      semi: true
  - files:
      - "*.html"
      - "legacy/**/*.js"
    options:
      tabWidth: 4

Для каждого переопределения требуется files; его значением может быть строка или массив строк. Параметр excludeFiles можно указать дополнительно, чтобы исключить файлы для данного правила; его значением также может быть строка или массив строк.

Настройка параметра parser

По умолчанию Prettier автоматически определяет используемый парсер на основе расширения входного файла. Сочетание с overrides позволяет научить Prettier анализировать файлы, которые он не распознаёт.

Например, чтобы Prettier форматировал собственный файл .prettierrc, можно сделать следующее:

{
  "overrides": [
    {
      "files": ".prettierrc",
      "options": { "parser": "json" }
    }
  ]
}

Также можно переключиться на парсер flow вместо используемого по умолчанию парсера babel для файлов .js:

{
  "overrides": [
    {
      "files": "*.js",
      "options": {
        "parser": "flow"
      }
    }
  ]
}

Примечание: Никогда не указывайте параметр parser на верхнем уровне конфигурации. Используйте его только внутри overrides. Иначе вы фактически отключите автоматическое определение парсера Prettier по расширению файла. В результате Prettier будет использовать указанный парсер для всех типов файлов — даже если это не имеет смысла, например, пытаясь разобрать CSS-файл как JavaScript.

Схема конфигурации

Если вам нужна схема JSON для проверки конфигурации, она доступна здесь: https://www.schemastore.org/prettierrc.json.

EditorConfig

Если в проекте есть файл .editorconfig, Prettier обработает его и преобразует содержащиеся в нём свойства в соответствующие параметры конфигурации Prettier. Эта конфигурация будет переопределена параметрами .prettierrc и т. д.

примечание

В отличие от спецификации EditorConfig, поиск файла .editorconfig остановится в корневом каталоге проекта и не будет продолжаться выше.

Ниже приведено описание того, как различные свойства влияют на поведение Prettier:

# Stop the editor from looking for .editorconfig files in the parent directories
# root = true

[*]
# Non-configurable Prettier behaviors
charset = utf-8
insert_final_newline = true
# Caveat: Prettier won’t trim trailing whitespace inside template strings, but your editor might.
# trim_trailing_whitespace = true

# Configurable Prettier behaviors
# (change these if your Prettier config differs)
end_of_line = lf
indent_style = space
indent_size = 2
max_line_length = 80

Если вы используете параметры по умолчанию, ниже приведён готовый для копирования и вставки файл .editorconfig:

[*]
charset = utf-8
insert_final_newline = true
end_of_line = lf
indent_style = space
indent_size = 2
max_line_length = 80

© James Long and contributors
https://prettier.io/docs/configuration

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API