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&.tsyang 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-plugindan@typescript-eslint/parser. - Untuk proyek besar, kamu juga bisa tambahkan
eslint-config-airbnbataueslint-config-standarduntuk gaya linting yang lebih ketat.