Back

Why You Should Use Biomejs Over Prettier and ESLint

BiomeJS is an all-in-one code formatter and linter that provides a unified alternative to tools like Prettier and ESLint. By eliminating the need to manage multiple tools and their configurations, Biome simplifies the development workflow. This article explores why Biome is a superior choice and demonstrates how to get started with it.


Advantages of Using biome

  1. Unified Toolchain:

    • Biome combines the functionality of Prettier and ESLint, so there's no need to set up, configure, and synchronize multiple tools.
  2. Performance:

    • Built in Rust, Biome is significantly faster than JavaScript-based tools.
  3. Zero Dependencies:

    • Biome eliminates the need for extensive node_modules overhead.
  4. Built-in TypeScript Support:

    • Unlike Prettier and ESLint, which require plugins, Biome works with TypeScript out of the box.
  5. Editor Integration:

    • Offers seamless integration with VSCode and other editors.

Setting Up Biome in Your Project

Step 1: Install Biome

npm install --save-dev @biomejs/biome
// or
yarn add -D @biomejs/biome
// or
bun install -D @biomejs/biome

Step 2: Initialize Biome

Run the initialization command to set up Biome in your project:

biome init

This will create a biome.json configuration file in your project root.


Practical Usage Examples

Formatting Code

With Biome, formatting is effortless. Run the following command to format all files in your project:

biome format .

You can also format specific files or directories:

biome format src/**/*.ts

Before Formatting:

function add(a,b){return a+b;}

After Formatting (Default Config):

function add(a, b) {
  return a + b;
}

Linting Code

Biome's linter runs automatically when you invoke the check command:

biome check .

Example Issue:

Code violating a lint rule, like using var instead of let:

var name = "Biome";

Suggested Fix:

Run the fix command:

biome fix .

Updated Code:

let name = "Biome";

Biome also displays clear and concise error messages, making debugging faster.


Configuration in biome.json

Biome's configuration is simple and self-contained. Example biome.json:

{
  "formatter": {
    "lineWidth": 80,
    "indentStyle": "space",
    "indentWidth": 2
  },
  "lint": {
    "enabled": true,
    "rules": {
      "recommended": true
    }
  }
}

No need to juggle separate .eslintrc and .prettierrc files!


Comparing Biome with Prettier + ESLint

| Feature                    | Biome                 | Prettier + ESLint        |
|----------------------------|-----------------------|--------------------------|
| Setup                      | Single tool, easy     | Multiple tools, complex  |
| Performance                | Blazing fast (Rust)   | Slower (JavaScript)      |
| Dependencies               | Zero dependencies     | Requires plugins         |
| TypeScript Support         | Built-in              | Plugins required         |
| Configuration Simplicity   | Unified config        | Multiple configs         |

Conclusion

Biome simplifies modern JavaScript and TypeScript development by offering a high-performance, unified toolchain for formatting and linting. Its zero-dependency setup, blazing-fast speed, and built-in support for TypeScript make it a clear winner over Prettier and ESLint.

Switch to Biome today and streamline your workflow! 🚀