Prettierrc Validator

v1.0.0

Validate and lint Prettier configuration files (.prettierrc, .prettierrc.json, .prettierrc.yaml, .prettierrc.toml, package.json#prettier) for structure, inva...

0· 72· 1 versions· 0 current· 0 all-time· Updated 1w ago· MIT-0

Prettier Config Validator

Validate .prettierrc config files for correctness, deprecated options, conflicting overrides, and best practices. Supports JSON, YAML, TOML, and package.json#prettier field. JS configs are detected but not statically validated.

Commands

# Full lint (all rules)
python3 scripts/prettierrc_validator.py lint .prettierrc.json

# Check enum values, ranges, type conflicts only
python3 scripts/prettierrc_validator.py options .prettierrc.json

# Check deprecated/removed options only
python3 scripts/prettierrc_validator.py deprecated .prettierrc.json

# Validate 'overrides' array only
python3 scripts/prettierrc_validator.py overrides .prettierrc.json

# Validate structure/syntax only
python3 scripts/prettierrc_validator.py validate .prettierrc.json

# JSON output (for CI / tooling)
python3 scripts/prettierrc_validator.py lint .prettierrc.json --format json

# Summary line only
python3 scripts/prettierrc_validator.py lint .prettierrc.json --format summary

Supported files

  • .prettierrc (JSON or YAML auto-detected)
  • .prettierrc.json / .prettierrc.json5
  • .prettierrc.yaml / .prettierrc.yml
  • .prettierrc.toml
  • package.json — validates the "prettier" field
  • .prettierrc.js / prettier.config.js — detected but not validated statically

Rules (22)

Structure (5)

  • Invalid JSON / YAML / TOML syntax
  • Unknown top-level options
  • Wrong type for option (boolean, int, string, array expected)
  • Empty config file
  • package.json with missing or invalid prettier field

Options (7)

  • Invalid enum value (quoteProps, trailingComma, arrowParens, proseWrap, htmlWhitespaceSensitivity, endOfLine, embeddedLanguageFormatting)
  • printWidth out of reasonable range (< 20 or > 320)
  • tabWidth invalid (0 or negative, > 16 warning)
  • parser name not a known built-in parser
  • requirePragma + insertPragma both true (conflict)
  • rangeStart > rangeEnd (inverted range)
  • Unknown parser name (plugin-assumed)

Deprecated (2)

  • jsxBracketSameLine → use bracketSameLine (Prettier 2.4+)
  • Removed options (useFlowParser, tabs) with replacement guidance

Overrides (5)

  • Override missing files field
  • files empty array or wrong type
  • Override missing options (no effect)
  • Unknown option inside override
  • Duplicate glob pattern across overrides (precedence bug)

Best Practices (3)

  • Missing endOfLine setting (cross-platform advice)
  • Missing trailingComma (default changed in Prettier v3)
  • printWidth very short (< 40) — may cause awkward line breaks
  • useTabs: true without explicit tabWidth
  • Invalid / empty plugin entries

Output Formats

  • text (default): human-readable with severity icons
  • json: machine-readable list of issues (file, path, rule, severity, message, category)
  • summary: single line of counts

Exit Codes

  • 0: No errors (warnings/info allowed)
  • 1: Errors found
  • 2: Invalid input (file not found, unparseable, unsupported format)

Requirements

  • Python 3.8+
  • Optional: PyYAML (better YAML parsing — falls back to a minimal parser for simple configs)
  • Optional: tomli (only for Python 3.10 and below; Python 3.11+ has tomllib built in)

Examples

Broken config

{ "printWidth": "100", "trailingComma": "some", "jsxBracketSameLine": true }
✗ ERROR   wrong-type          [printWidth] must be an integer
✗ ERROR   invalid-enum-value  [trailingComma] invalid value 'some' (valid: all, es5, none)
⚠ WARNING deprecated-option   [jsxBracketSameLine] use 'bracketSameLine'

Good CI gate

python3 scripts/prettierrc_validator.py lint .prettierrc.json --format summary
# exit 1 on any error — fails the CI step

Version tags

latestvk97d7rpn7fgg01ybadpndmpkcn84y7s5