Sebagai software developer yang terbiasa dengan JavaScript, kamu mungkin sering mengalami masalah seperti:

  • Penulisan kode tidak konsisten
  • Nama variabel berantakan
  • Lupa titik koma (;)
  • Gaya indentasi beda-beda

Hal ini wajar karena JavaScript memang fleksibel. Tapi kalau proyekmu sudah mulai besar dan melibatkan banyak developer, konsistensi penulisan kode jadi krusial.

Solusinya: gunakan ESLint, Prettier, Husky, dan Lint-Staged. Dengan ini, kamu bisa memastikan kode tetap rapi, mudah dibaca, dan konsisten di seluruh tim.


โšก QUICK START โ€” Setup Otomatis

Kalau kamu cuma mau langsung pakai tanpa baca panjang-panjang, ikuti langkah di bawah ini:

# 1. Install semua dependency
npm install --save-dev eslint@latest @eslint/js@latest prettier husky lint-staged

# 2. Buat file konfigurasi ESLint
touch eslint.config.js

๐Ÿ“„ Isi eslint.config.js:

import { defineConfig } from "eslint/config";
import js from "@eslint/js";

export default defineConfig([
  {
    files: ["**/*.js"],
    plugins: { js },
    extends: ["js/recommended"],
    rules: {
      "no-unused-vars": "warn",
      "no-undef": "warn",
    },
  },
]);
# 3. Buat file konfigurasi Prettier
touch .prettierrc

๐Ÿ“„ Isi .prettierrc:

{
  "printWidth": 80,
  "tabWidth": 2,
  "useTabs": false,
  "semi": true,
  "singleQuote": true,
  "trailingComma": "all"
}
# 4. Inisialisasi Husky
npx husky init
# 5. Edit file /.husky/pre-commit
npx lint-staged

๐Ÿ“„ Tambahkan konfigurasi Lint-Staged di package.json:

"lint-staged": {
  "*.{js,ts}": [
    "prettier --write",
    "eslint --cache --fix"
  ]
}

โœ… Selesai! Sekarang setiap kamu melakukan git commit, kode akan otomatis:

  • Diformat oleh Prettier
  • Diperiksa oleh ESLint
  • Diperbaiki secara otomatis jika bisa

๐Ÿ“˜ Penjelasan Step-by-Step

Kalau kamu ingin memahami setiap bagian lebih dalam, berikut penjelasan manualnya:


๐Ÿ” 1. ESLint โ€” Linting Kode

Apa itu ESLint? ESLint adalah alat untuk mengecek apakah kode kamu sudah sesuai dengan aturan tertentu (rules). Misalnya: ada variabel yang tidak dipakai, lupa deklarasi, dsb.

๐Ÿ“– Dokumentasi resmi: https://eslint.org

๐Ÿ“ฆ Instalasi

npm install --save-dev eslint@latest @eslint/js@latest

โš™๏ธ Konfigurasi

Buat file eslint.config.js:

touch eslint.config.js

Isi seperti ini:

import { defineConfig } from "eslint/config";
import js from "@eslint/js";

export default defineConfig([
  {
    files: ["**/*.js"],
    plugins: { js },
    extends: ["js/recommended"],
    rules: {
      "no-unused-vars": "warn",
      "no-undef": "warn",
    },
  },
]);

๐Ÿ“Œ Kamu bisa ubah rules sesuai kebutuhan tim/proyekmu.

โ–ถ๏ธ Menjalankan ESLint

npx eslint src/        # lint seluruh folder
npx eslint file.js     # lint file tunggal

๐ŸŽจ 2. Prettier โ€” Format Otomatis

Apa itu Prettier? Prettier adalah formatter otomatis yang mengatur gaya penulisan kode: indentasi, titik koma, kutip, dsb.

๐Ÿ“– Dokumentasi resmi: https://prettier.io

๐Ÿ“ฆ Instalasi

npm install --save-dev prettier

โš™๏ธ Konfigurasi

Buat file .prettierrc:

touch .prettierrc

Isi seperti ini:

{
  "printWidth": 80,
  "tabWidth": 2,
  "useTabs": false,
  "semi": true,
  "singleQuote": true,
  "trailingComma": "all"
}

๐Ÿ“Œ Ini adalah konfigurasi umum yang banyak dipakai di proyek TypeScript/Node.js modern.


๐Ÿช 3. Husky + Lint-Staged โ€” Hook Git Otomatis

Agar proses linting & formatting dijalankan sebelum commit, kita bisa pakai Husky dan Lint-Staged.

๐Ÿ“ฆ Instalasi

npm install --save-dev husky lint-staged
npx husky init

Ini akan membuat folder .husky/ dan file .husky/pre-commit.

โš™๏ธ Konfigurasi pre-commit

Edit file .husky/pre-commit dan tambahkan:

npx lint-staged

๐Ÿงฉ Konfigurasi Lint-Staged

Tambahkan di package.json:

"lint-staged": {
  "*.{js,ts}": [
    "prettier --write",
    "eslint --cache --fix"
  ]
}

Dengan ini:

  • File .js & .ts yang di-stage akan diformat & diperiksa sebelum commit.
  • Commit akan gagal otomatis jika ada error yang tidak bisa diperbaiki otomatis.

โœ… Kesimpulan / Highlight

  • โœ… ESLint: memastikan kode sesuai aturan, mendeteksi error lebih awal.
  • โœ… Prettier: membuat kode lebih rapi, konsisten, dan enak dibaca.
  • โœ… Husky + Lint-Staged: memastikan semua kode diformat & di-lint otomatis sebelum commit.

๐Ÿ”ฅ Dengan setup ini, kamu bisa menjaga kualitas kode tetap tinggi, review PR jadi lebih mudah, dan developer baru lebih cepat adaptasi gaya coding tim.


๐Ÿง  Tips Tambahan

  • Kalau kamu pakai TypeScript, kamu bisa install plugin tambahan seperti @typescript-eslint/eslint-plugin dan @typescript-eslint/parser.
  • Untuk proyek besar, kamu juga bisa tambahkan eslint-config-airbnb atau eslint-config-standard untuk gaya linting yang lebih ketat.