fahreziblog
Kembali ke blog

BiomeJS vs ESLint & Prettier: Menghilangkan Mimpi Buruk Konfigurasi Toolchain JavaScript

Setiap developer yang pernah memulai proyek baru dengan JavaScript atau TypeScript pasti pernah merasakan frustrasi ini: Anda hanya ingin mulai menulis kode fitur, tetapi Anda menghabiskan dua jam pertama hanya untuk mengkonfigurasi linter dan formatter agar tidak bertengkar satu sama lain.

Secara historis, alur kerja standar industri membagi tugas ini kepada dua alat berbeda:

  1. ESLint bertugas memeriksa kualitas logika kode (code quality), seperti mendeteksi variabel yang tidak dipakai atau potensi bug.
  2. Prettier bertugas merapikan tampilan visual kode (code formatting), seperti panjang baris, titik koma, dan spasi indentasi.

Masalahnya, kedua alat ini sering kali memiliki aturan yang saling tumpang tindih. Hasilnya adalah munculnya ekosistem “tambal sulam” yang melelahkan: .eslintrc.js, .prettierrc, eslint-config-prettier, eslint-plugin-prettier, ditambah konfigurasi Git hooks seperti Husky dan lint-staged.

Di tengah kelelahan konfigurasi (configuration fatigue) inilah BiomeJS hadir membawa angin segar.


Filosofi “Parse Sekali, Eksekusi Semua”

Salah satu inefisiensi terbesar dari menduetkan ESLint dan Prettier adalah pemborosan komputasi. Ketika Anda menyimpan sebuah file, Prettier membaca kode Anda dan membangun Pohon Sintaks Abstrak (Abstract Syntax Tree / AST) untuk memformatnya. Setelah itu, ESLint membaca file yang sama dari awal lagi, membangun AST kedua yang terpisah, dan memeriksa aturan linter.

Di proyek monorepo dengan puluhan ribu file, proses parsing berulang ini memakan waktu yang sangat signifikan di CI/CD pipeline maupun di editor lokal.

[Alur Tradisional: Boros Komputasi]
File Kode ──▶ [Prettier Parse AST] ──▶ Format File
          ──▶ [ESLint Parse AST]   ──▶ Cek Error Linter (Lambat di Node.js)

[Alur BiomeJS: Terpadu Berbasis Rust]
File Kode ──▶ [Biome Parse AST Tunggal di Memori C/Rust] ──▶ Format + Lint Sekaligus (Hitungan Milidetik!)

Dibangun menggunakan bahasa pemrograman Rust (berevolusi dari proyek Rome yang dipelopori oleh Sebastian McKenzie, pencipta Babel), Biome hanya mem-parsing file satu kali saja. Struktur AST yang sama langsung digunakan bersama oleh formatter dan linter secara paralel.


3 Keunggulan Utama BiomeJS Dibanding Pendahulu

1. Kecepatan Eksekusi yang Tidak Masuk Akal

Biome beroperasi sekitar 15 hingga 30 kali lebih cepat daripada kombinasi Prettier dan ESLint. Pada repositori skala besar dengan 10.000 file, proses verifikasi linting yang biasanya memakan waktu 45 detik di GitHub Actions kini terpangkas menjadi kurang dari 2 detik. Di editor lokal, penekanan tombol simpan (Ctrl+S) terasa instan tanpa ada micro-stutter.

2. File Konfigurasi Tunggal (Zero-Clutter)

Tidak ada lagi tumpukan file konfigurasi di root folder Anda. Seluruh aturan formatting dan linting diatur dalam satu file biome.json yang sangat terstruktur dan dilengkapi schema autocompletion:

{
  "$schema": "https://biomejs.dev/schemas/1.8.3/schema.json",
  "formatter": {
    "enabled": true,
    "indentStyle": "space",
    "indentWidth": 2,
    "lineWidth": 100
  },
  "linter": {
    "enabled": true,
    "rules": {
      "recommended": true
    }
  }
}

3. Diagnostik dan Pesan Error yang Manusiawi

Pesan error yang dihasilkan Biome tidak sekadar menampilkan kode error samar. Biome menyajikan cuplikan baris kode dengan penunjuk warna yang jelas, penjelasan mengapa aturan tersebut dilanggar, serta saran perbaikan otomatis yang bisa langsung diaplikasikan (safe auto-fixes).


Kapan Sebaiknya Anda Tetap Menggunakan ESLint?

Meskipun Biome menawarkan pengalaman developer yang jauh lebih mulus, ada skenario di mana ESLint masih menjadi pilihan yang diperlukan:

  1. Kebutuhan Custom Plugin yang Sangat Spesifik: Jika tim Anda menggunakan puluhan plugin ESLint kustom yang dibuat khusus untuk aturan internal arsitektur perusahaan Anda, Biome belum mendukung ekosistem plugin pihak ketiga seluas ESLint demi menjaga garansi performa tingginya.
  2. Framework Niche: ESLint memiliki dukungan komunitas yang sangat tua untuk framework dan sintaks eksperimental yang sangat langka.

Namun, untuk 95% proyek JavaScript, TypeScript, React, dan Node.js standar, Biome sudah lebih dari siap untuk menggantikan kombinasi lama tersebut. Mengadopsi Biome bukan hanya mempercepat alur kerja harian Anda, tetapi juga mengembalikan ketenangan pikiran dari mimpi buruk konfigurasi toolchain.

Comments