eslint-plugin-prettier

Run Prettier as an ESLint rule that reports formatting differences as autofixable lint errors.

Tool
npm
v5.5.6
3,654 stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
68 /100 Good
Development Activity 68
Maintenance 44
Community 60
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
74 /100 Good
Architecture 82
Code Quality 85
Innovation 60
Learning Curve 70

eslint-plugin-prettier integrates Prettier directly into ESLint’s rule engine, reporting any formatting difference between your source and Prettier’s expected output as a standard ESLint prettier/prettier violation — insertions, deletions, and replacements are all surfaced with precise line/column locations and can be auto-fixed via eslint --fix.

Rather than reimplementing formatting logic, the plugin lazily loads Prettier through a synckit-backed worker so a single ESLint rule visitor can call Prettier’s promise-based API synchronously, and it ships ready-made recommended configs for both legacy .eslintrc and flat eslint.config.js setups that also enable eslint-config-prettier to silence conflicting style rules.

What You Get

  • A prettier/prettier ESLint rule that reports every formatting difference as an autofixable lint error
  • Ready-made recommended configs for both legacy .eslintrc and flat eslint.config.js setups
  • Automatic disabling of conflicting ESLint formatting rules via bundled eslint-config-prettier integration
  • Support for virtual files from other ESLint processors (Markdown, HTML, GraphQL, Vue, Svelte) without double-formatting

Common Use Cases

  • Enforcing consistent code formatting across a team without a separate Prettier CI step
  • Auto-fixing formatting violations during eslint --fix or on save in an editor
  • Migrating a codebase from format-related ESLint rules to Prettier-driven formatting
  • Catching formatting drift in pull requests via a single eslint check

Under The Hood

Architecture Single-file plugin (eslint-plugin-prettier.js) exports one ESLint rule that hooks the top-level AST node type, lazily requiring synckit’s createSyncFn against a separate worker.mjs script to bridge Prettier’s promise-based API into ESLint’s synchronous rule visitor; the worker resolves .prettierrc/.editorconfig via prettier.resolveConfig, infers a parser via prettier.getFileInfo, and formats via prettier.format(), returning the formatted string across the process boundary. Differences between source and formatted output are computed with prettier-linter-helpers’s generateDifferences and reported as individual ESLint issues with precise fix ranges. A recommended.js/recommended.d.ts pair composes the plugin with eslint-config-prettier’s rule-disabling config for flat-config consumers, while legacy .eslintrc consumers get an equivalent configs.recommended entry inside the plugin object itself. This is about as flat and single-purpose an architecture as an ESLint plugin can have — no internal layering beyond the worker-process split needed for the sync/async bridge.

Tech Stack Plain CommonJS module for the main plugin entry, ESM worker invoked via synckit, with runtime dependencies limited to prettier-linter-helpers (diff/invisible-character formatting) and synckit (sync-over-async worker bridge); peer dependencies are eslint, eslint-config-prettier, and prettier, reflecting that the plugin does no bundling of its own and defers entirely to the host project’s installed versions. Devtooling is comprehensive: a recent major-version ESLint running in flat-config mode (dogfooding itself via plugin:prettier/recommended), Mocha for tests, Changesets for versioned releases, commitlint plus simple-git-hooks for commit discipline, and a pnpm workspace with a patched dependency supporting the remark-based docs lint pipeline.

Code Quality Tests live under test/ as numbered .txt fixture files covering dozens of formatting scenarios plus named edge cases (Vue, GraphQL, MDX, JSON), driven through Mocha via test/prettier.mjs — a snapshot-style fixture approach well suited to a rule whose job is literally “does the diff match.” Error handling is explicit: both the rule and the worker special-case SyntaxError from Prettier and re-throw anything unexpected, and the rule strips Prettier’s redundant code-frame text from re-reported messages. Typing is done via JSDoc @ts-check annotations and @import typedefs rather than compiled TypeScript, checked by lint and format scripts that run in CI. Test fixture coverage across markdown/html/graphql/vue/svelte edge cases is notably thorough for a package this size.

API Design The plugin’s entire public surface is one rule name (prettier/prettier) plus two ready-made config exports, about as low-boilerplate as an ESLint integration gets — most consumers add a single extends entry or import the flat-config object and never touch the rule’s options directly. The rule’s own options mirror Prettier’s own API rather than inventing new configuration vocabulary, keeping the learning curve close to zero for anyone who already knows Prettier. The README documents edge cases thoroughly (Svelte support caveats, a documented arrow-body-style/prefer-arrow-callback interaction bug) rather than just happy-path usage. Running a formatter through a linter’s fixer mechanism is a well-established pattern predating this package, so it isn’t technically novel — but the developer experience is exemplary for its category.

Used by 102 apps in this directory

JavaScript
99%
GPL 3.0

homepage

Monitoring · Productivity

33,041

A fast, fully static, and secure self-hosted startpage with Docker service discovery and integrations for over 160 services.

View details
90
Repo Health
86
Technical
71
Dependency
Built with
JavaScript 99%
Updated yesterday
TypeScript
68%
MIT

Hoppscotch

Developer Tools

80,589

A lightweight, offline-capable API development ecosystem for testing HTTP, GraphQL, WebSocket, MQTT, and SSE endpoints across web, desktop, and CLI.

View details
90
Repo Health
83
Technical
62
Dependency
Built with
TypeScript 68%
Vue 24%
Updated 3 days ago
TypeScript
96%
MIT

HyperDX

Analytics · Developer Tools · Monitoring

9,939

Open source observability platform that unifies logs, traces, metrics, and session replays on ClickHouse — now the core of ClickStack.

View details
88
Repo Health
83
Technical
65
Dependency
Built with
TypeScript 96%
Updated yesterday
TypeScript
97%
Other

Infisical

Devops · Security

29,684

The open-source platform for secrets, certificates, privileged access, and AI agent security — all in one self-hostable system.

View details
91
Repo Health
84
Technical
64
Dependency
Built with
TypeScript 97%
Updated today
TypeScript
93%
Apache 2.0

InsForge

Databases · Developer Tools

13,073

The all-in-one, open-source backend platform purpose-built for AI coding agents — giving your agent database, auth, storage, edge functions, a model gateway, and compute to ship full-stack apps end-to-end.

View details
85
Repo Health
81
Technical
72
Dependency
Built with
TypeScript 93%
Updated 4 days ago
TypeScript
98%
MIT

isoflow

Design Tools · Developer Tools

1,719

A React component that lets developers embed a fully-featured, isometric network diagram editor directly into their applications.

View details
41
Repo Health
72
Technical
70
Dependency
Built with
TypeScript 98%
Updated 1 years ago
Python
51%
AGPL 3.0

Khoj

AI Assistants · Knowledge Management · Productivity

37,614

A self-hostable AI second brain that chats with your documents, searches the web, builds custom agents, and runs entirely on your own LLM.

View details
63
Repo Health
82
Technical
66
Dependency
Built with
Python 51%
TypeScript 36%
Updated 2 months ago
TypeScript
98%
Other

Kibana

Analytics · Monitoring

21,308

Your open source window into the Elastic Stack — query, visualize, and act on data stored in Elasticsearch with real-time dashboards, AI-assisted search, and automated alerting.

View details
98
Repo Health
87
Technical
62
Dependency
Built with
TypeScript 98%
Updated today
TypeScript
94%
AGPL 3.0

Laudspeaker

Automation · Marketing

2,628

Open-source customer engagement platform for building visual, event-triggered messaging journeys across email, SMS, push, in-app, and webhooks.

View details
45
Repo Health
66
Technical
62
Dependency
Built with
TypeScript 94%
Updated 3 months ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers