JAVASCRIPT TYPESCRIPT CODE-QUALITY LINTING FORMATTING DEVELOPER-EXPERIENCE TOOLING BEST-PRACTICES AUTOMATION WEB-DEVELOPMENT FRONTEND BACKEND

Menguasai Prettier dan ESLint: Otomatisasi Kualitas Kode untuk Developer JavaScript/TypeScript

⏱️ 11 menit baca
👨‍💻

Menguasai Prettier dan ESLint: Otomatisasi Kualitas Kode untuk Developer JavaScript/TypeScript

1. Pendahuluan

Pernahkah Anda menghabiskan waktu berdebat dengan rekan tim tentang apakah harus menggunakan single quote atau double quote? Atau mengapa indentasi kode seseorang berbeda dengan yang lain? Jika ya, Anda tidak sendirian. Perbedaan gaya penulisan kode atau adanya bug kecil yang luput dari perhatian saat code review adalah hal yang sering terjadi dan bisa menghambat produktivitas tim.

Di dunia web development yang serba cepat ini, konsistensi dan kualitas kode adalah kunci. Kode yang bersih, mudah dibaca, dan bebas dari potensi bug tidak hanya mempercepat proses pengembangan tetapi juga mengurangi technical debt di masa depan. Di sinilah Prettier dan ESLint berperan sebagai dua pahlawan super yang bekerja sama untuk menjaga kode Anda tetap prima.

📌 Prettier adalah code formatter yang secara otomatis memformat kode Anda agar sesuai dengan gaya yang konsisten. 📌 ESLint adalah linter yang menganalisis kode Anda untuk menemukan masalah potensial, mulai dari kesalahan sintaksis hingga pelanggaran best practices.

Dalam artikel ini, kita akan menyelami lebih dalam bagaimana Prettier dan ESLint bekerja, cara mengkonfigurasinya, dan bagaimana mengintegrasikan keduanya untuk menciptakan lingkungan pengembangan yang otomatis, efisien, dan menyenangkan, baik untuk proyek JavaScript maupun TypeScript Anda. Mari kita mulai!

2. Apa itu Prettier dan Mengapa Anda Membutuhkannya?

Bayangkan Anda memiliki sebuah tim yang terdiri dari lima developer. Masing-masing memiliki preferensi gaya kode yang berbeda. Ada yang suka indentasi 2 spasi, ada yang 4 spasi. Ada yang selalu pakai titik koma, ada yang tidak. Hasilnya? Kode yang berantakan, sulit dibaca, dan code review yang lebih fokus pada gaya daripada logika bisnis.

Prettier hadir untuk mengatasi masalah ini. Prettier adalah opinionated code formatter. Artinya, ia mengambil sebagian besar keputusan gaya untuk Anda, sehingga Anda tidak perlu lagi berdebat tentang code style. Anda cukup menulis kode, dan Prettier akan merapikannya secara otomatis saat Anda menyimpan file.

✅ Keuntungan Menggunakan Prettier:

❌ Kekurangan Prettier (atau lebih tepatnya, yang perlu Anda tahu):

Memulai dengan Prettier

Untuk memulai, instal Prettier sebagai dependency pengembangan di proyek Anda:

npm install --save-dev prettier
# atau
yarn add --dev prettier

Kemudian, buat file konfigurasi Prettier di root proyek Anda, misalnya .prettierrc.json:

// .prettierrc.json
{
  "printWidth": 80,
  "tabWidth": 2,
  "useTabs": false,
  "semi": true,
  "singleQuote": true,
  "trailingComma": "all",
  "bracketSpacing": true,
  "jsxBracketSameLine": false,
  "arrowParens": "always"
}

💡 Tips Konfigurasi:

Anda bisa menjalankan Prettier secara manual dari command line untuk memformat file:

npx prettier --write "src/**/*.{js,jsx,ts,tsx,json,css,md}"

Untuk integrasi yang lebih baik, instal extension Prettier di editor kode Anda (misalnya VS Code) dan aktifkan “Format On Save”. Ini akan secara otomatis memformat kode setiap kali Anda menyimpan file.

3. Apa itu ESLint dan Mengapa Anda Membutuhkannya?

Jika Prettier adalah penata rambut yang membuat kode Anda terlihat rapi, maka ESLint adalah dokter yang memeriksa kesehatan kode Anda. ESLint memeriksa kode Anda untuk menemukan masalah yang lebih dalam dari sekadar gaya. Ini termasuk:

✅ Keuntungan Menggunakan ESLint:

Memulai dengan ESLint

Sama seperti Prettier, instal ESLint sebagai dependency pengembangan:

npm install --save-dev eslint
# atau
yarn add --dev eslint

Kemudian, inisialisasi konfigurasi ESLint:

npx eslint --init

Ini akan memandu Anda melalui beberapa pertanyaan untuk membuat file konfigurasi .eslintrc.js (atau .json, .yml).

💡 Pilihan Konfigurasi ESLint:

Contoh konfigurasi .eslintrc.js (setelah inisialisasi dan beberapa penyesuaian untuk TypeScript dan React):

// .eslintrc.js
module.exports = {
  parser: '@typescript-eslint/parser', // Untuk parsing TypeScript
  extends: [
    'eslint:recommended',
    'plugin:react/recommended',
    'plugin:@typescript-eslint/recommended',
    'plugin:prettier/recommended' // Ini akan dibahas di bagian selanjutnya
  ],
  parserOptions: {
    ecmaVersion: 2020,
    sourceType: 'module',
    ecmaFeatures: {
      jsx: true
    }
  },
  settings: {
    react: {
      version: 'detect'
    }
  },
  rules: {
    // Tambahkan atau timpa aturan di sini
    'no-console': 'warn',
    '@typescript-eslint/explicit-module-boundary-types': 'off',
    'react/react-in-jsx-scope': 'off' // Untuk React 17+ JSX Transform
  },
  env: {
    browser: true,
    node: true,
    es6: true
  }
};

Anda bisa menjalankan ESLint dari command line:

npx eslint "src/**/*.{js,jsx,ts,tsx}"

Sama seperti Prettier, instal extension ESLint di editor Anda untuk melihat feedback secara real-time saat Anda mengetik.

4. Mengintegrasikan Prettier dan ESLint: Harmoni Sempurna

Sekarang kita punya Prettier untuk gaya dan ESLint untuk kualitas. Bagaimana cara membuat keduanya bekerja sama tanpa bentrok? Misalnya, Prettier ingin menghapus titik koma, tapi ESLint dari style guide Airbnb ingin ada titik koma. Ini bisa menyebabkan konflik dan membuat frustrasi.

Solusinya adalah menggunakan plugin eslint-config-prettier dan eslint-plugin-prettier.

Langkah-langkah Integrasi:

  1. Instal plugin dan config:

    npm install --save-dev eslint-config-prettier eslint-plugin-prettier
    # atau
    yarn add --dev eslint-config-prettier eslint-plugin-prettier
  2. Perbarui konfigurasi .eslintrc.js Anda: Tambahkan plugin:prettier/recommended ke array extends Anda. PENTING: Pastikan plugin:prettier/recommended adalah yang terakhir dalam daftar extends, karena ini akan menimpa aturan yang bertentangan dari konfigurasi sebelumnya.

    // .eslintrc.js
    module.exports = {
      // ... konfigurasi lainnya
      extends: [
        'eslint:recommended',
        'plugin:react/recommended',
        'plugin:@typescript-eslint/recommended',
        'plugin:prettier/recommended' // Pastikan ini yang terakhir!
      ],
      // ... aturan dan pengaturan lainnya
    };

Dengan konfigurasi ini, alur kerjanya akan menjadi:

  1. Prettier memformat kode Anda saat disimpan (jika Anda mengaktifkan “Format On Save” di editor).
  2. ESLint akan memeriksa kualitas kode Anda, dan jika ada masalah gaya yang tidak diperbaiki oleh Prettier, ESLint akan melaporkannya (melalui eslint-plugin-prettier).

🎯 Tujuannya: Prettier mengurus gaya 100%, dan ESLint mengurus bug serta best practices. Tidak ada lagi konflik!

5. Tips dan Best Practices Lanjutan

Setelah Prettier dan ESLint terintegrasi dengan baik, ada beberapa langkah lanjutan untuk mengoptimalkan developer experience dan memastikan konsistensi di seluruh tim.

💡 5.1. Otomatisasi dengan npm scripts

Tambahkan script ke package.json Anda untuk menjalankan Prettier dan ESLint:

// package.json
{
  "name": "my-awesome-project",
  "version": "1.0.0",
  "scripts": {
    "lint": "eslint \"{src,apps,libs,test}/**/*.ts\"",
    "lint:fix": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
    "format": "prettier --write \"{src,apps,libs,test}/**/*.{ts,js,json,md}\"",
    "check-format": "prettier --check \"{src,apps,libs,test}/**/*.{ts,js,json,md}\""
  },
  // ... dependencies
}

Sekarang, Anda bisa menjalankan npm run lint untuk memeriksa masalah, npm run lint:fix untuk mencoba memperbaikinya secara otomatis, dan npm run format untuk memformat semua file dengan Prettier.

📌 5.2. Menggunakan Husky dan lint-staged untuk Pre-commit Hooks

Untuk memastikan tidak ada kode yang tidak terformat atau memiliki linting error yang masuk ke repository Git, Anda bisa menggunakan pre-commit hooks. Ini adalah script yang berjalan otomatis sebelum setiap commit.

  1. Instal Husky dan lint-staged:

    npm install --save-dev husky lint-staged
    # atau
    yarn add --dev husky lint-staged
  2. Inisialisasi Husky:

    npx husky install
  3. Tambahkan hook pre-commit:

    npx husky add .husky/pre-commit "npx lint-staged"
  4. Konfigurasi lint-staged di package.json: lint-staged akan menjalankan perintah hanya pada file yang di-stage (ditambahkan ke commit).

    // package.json
    {
      // ...
      "lint-staged": {
        "*.{js,jsx,ts,tsx}": "eslint --fix",
        "*.{js,jsx,ts,tsx,json,css,md}": "prettier --write"
      }
    }

⚠️ Dengan konfigurasi ini, setiap kali Anda melakukan git commit, lint-staged akan memformat dan memperbaiki linting error pada file yang Anda stage. Jika ada linting error yang tidak bisa diperbaiki otomatis, commit akan dibatalkan, memaksa Anda untuk memperbaikinya terlebih dahulu. Ini adalah cara yang sangat efektif untuk menjaga kualitas kode di repository.

🎯 5.3. Mengabaikan File Tertentu

Terkadang, ada file yang tidak perlu atau tidak boleh di-lint atau di-format (misalnya, build outputs, third-party libraries, atau file konfigurasi tertentu).

📈 5.4. Menggunakan Custom Rules atau Plugins

ESLint sangat fleksibel. Anda bisa menambahkan custom rules sendiri atau menggunakan plugins komunitas untuk framework atau library tertentu (misalnya, eslint-plugin-react-hooks, eslint-plugin-jsx-a11y, eslint-plugin-jest).

// .eslintrc.js
module.exports = {
  // ...
  plugins: [
    'react',
    '@typescript-eslint',
    'prettier',
    'react-hooks', // Contoh plugin tambahan
    'jsx-a11y'     // Contoh plugin tambahan
  ],
  extends: [
    // ...
    'plugin:react-hooks/recommended', // Konfigurasi dari plugin react-hooks
    'plugin:jsx-a11y/recommended'     // Konfigurasi dari plugin jsx-a11y
  ],
  rules: {
    // Tambahkan custom rules atau timpa rules dari plugins
    'react-hooks/rules-of-hooks': 'error',
    'react-hooks/exhaustive-deps': 'warn'
  }
};

Ini memungkinkan Anda untuk menyesuaikan ESLint agar benar-benar sesuai dengan kebutuhan dan standar proyek Anda.

Kesimpulan

Menguasai Prettier dan ESLint adalah investasi waktu yang sangat berharga bagi setiap developer JavaScript/TypeScript. Dengan mengintegrasikan kedua tool ini, Anda tidak hanya memastikan konsistensi gaya kode di seluruh proyek, tetapi juga secara proaktif menangkap potensi bug dan mendorong best practices.

Dari mengurangi perdebatan gaya saat code review hingga mencegah bug masuk ke produksi, Prettier dan ESLint adalah fondasi penting untuk menjaga kualitas kode dan meningkatkan produktivitas tim. Otomatisasi ini membebaskan Anda dan tim untuk fokus pada hal yang paling penting: membangun fitur-fitur hebat dan memecahkan masalah bisnis yang kompleks. Mulailah mengimplementasikannya di proyek Anda hari ini, dan rasakan perbedaannya!

🔗 Baca Juga