Consolidating JavaScript Tooling with Biome's Unified Check Command
Learn how to replace fragmented ESLint and Prettier setups with Biome's unified check command to improve CI/CD performance and simplify project configuration.
25 Dec 2025, 10:34 UTC

The Problem: Toolchain Fragmentation
Most JavaScript and TypeScript projects rely on a fragmented pipeline: Prettier for formatting, ESLint for linting, and separate tools for import organization. This setup introduces configuration drift, where a formatter and a linter fight over the same line of code, and slows down CI/CD pipelines by requiring multiple sequential passes over the same source files.
The takeaway is that Biome replaces these separate tools with a single Rust-based binary. By using the biome check command, you can perform linting, formatting, and import sorting in a single traversal of the Abstract Syntax Tree (AST), significantly reducing execution time and configuration overhead.
Implementing the Unified Configuration
Biome uses a single biome.json file to manage all toolchain behaviors. This eliminates the need for .eslintrc, .prettierrc, and .editorconfig files.
To initialize Biome in a project, run the following command in your terminal from the project root:
npx @biomejs/biome initThis creates a default biome.json. To configure specific linting categories and formatting rules, modify the file as follows:
{
"$schema": "https://biomejs.dev/schemas/1.8.3/schema.json",
"organizeImports": {
"enabled": true
},
"linter": {
"enabled": true,
"rules": {
"recommended": true,
"correctness": {
"noUnusedVariables": "warn"
},
"style": {
"useConst": "error"
}
}
},
"formatter": {
"enabled": true,
"indentStyle": "space",
"indentWidth": 2,
"lineWidth": 80
}
}Executing the Unified Check
Instead of running npm run lint and npm run format separately, use the check command. This command analyzes the code for linting errors, formatting inconsistencies, and unordered imports simultaneously.
Command: Run this via your terminal or CI pipeline.
Permissions: Standard user permissions; requires read/write access to the target files if applying fixes.
Risk: Using the --apply flag modifies source code directly. Ensure you have a clean git state before running.
# Check for issues without modifying files
npx @biomejs/biome check .
# Automatically fix lint errors and format code
npx @biomejs/biome check --apply .
# Fix only safe issues (no breaking logic changes)
npx @biomejs/biome check --apply-safe .Diagnostic Comparison: Biome vs. Traditional Toolchains
| Feature | ESLint + Prettier | Biome |
|---|---|---|
| Execution Speed | Moderate (Node.js based) | High (Rust based) |
| Config Files | Multiple (.eslintrc, .prettierrc) | Single (biome.json) |
| AST Traversal | Multiple passes | Single pass |
| Extensibility | High (Plugin ecosystem) | Low (Built-in rules only) |
Limitations and Common Pitfalls
While Biome streamlines the pipeline, it introduces specific constraints that may impact certain project architectures:
- Lack of Plugin System: Unlike ESLint, Biome does not support third-party plugins. If your project relies on highly specific community rules (e.g., specialized React hooks plugins or Tailwind CSS class sorting), you cannot import them into Biome.
- Dialect Support: Biome is optimized for modern JavaScript and TypeScript. Legacy projects using non-standard dialects or very old ECMAScript versions may encounter parsing errors.
- Formatting Edge Cases: While Biome aims for Prettier compatibility, some complex formatting behaviors in niche edge cases may differ.
Verifying the Result
To verify that Biome is correctly managing your project, run the check command on a file with known issues (e.g., an unused variable and inconsistent indentation):
- Create a file
test.jswithconst x = 1; const y=2;(extra spaces and unused variables). - Run
npx @biomejs/biome check test.js. - Confirm the output identifies both a
styleissue (formatting) and acorrectnessissue (unused variable). - Run
npx @biomejs/biome check --apply test.jsand verify the file is now formatted and the warnings are addressed.
0 replies
A thoughtful contribution can make all the difference. Be the first to share one.