| name | prettier-compare |
| description | Compares code formatting and formatting IR between Biome and Prettier to ensure that Biome's formatting is consistent and correct. Use when validating formatter changes, debugging formatting differences, or comparing output for JavaScript, TypeScript, CSS, or other languages. |
| compatibility | Designed for coding agents working on the Biome codebase (github.com/biomejs/biome). Requires bun and wasm-bindgen-cli. |
Purpose
Use packages/prettier-compare/ to inspect any differences between Biome and Prettier formatting (including IR output) before shipping formatter changes.
Prerequisites
- Run every command from the repository root so relative paths resolve correctly.
- Use
bun (the CLI is a Bun script) and ensure dependencies have been installed.
- Always pass
--rebuild so the Biome WASM bundle matches your current Rust changes.
Common workflows
Snippets passed as CLI args:
bun packages/prettier-compare/bin/prettier-compare.js --rebuild 'const x={a:1,b:2}'
Force a language (useful when the tool cannot infer it from a filename):
bun packages/prettier-compare/bin/prettier-compare.js --rebuild -l ts 'const x: number = 1'
Compare files on disk:
bun packages/prettier-compare/bin/prettier-compare.js --rebuild -f src/example.tsx
Read from stdin (great for piping editor selections):
echo 'const x = 1' | bun packages/prettier-compare/bin/prettier-compare.js --rebuild -l js
Tips
- Use
-l/--language when formatting code without an extension so both formatters pick the correct parser.
- Use
-f/--file for large samples or snapshot tests so you can iterate directly on project fixtures.
- Reference
packages/prettier-compare/README.md for deeper CLI details; mirror any updates here, keeping the hard requirement that commands include --rebuild.
- Use single quotes for code snippets passed as CLI arguments to avoid shell interpretation issues.
- "\n" does not get escaped into a newline when passed as a CLI argument. You should write a literal newline or use a file instead.
- The tool is OK to run in read-only/planning modes even when running it with
--rebuild since it only rebuilds the Biome WASM bundle and does not modify any source files.