Optimasi Build untuk Deployment & Analisis Bundle Size (Bundle Analyzer)

By | 24 October 2025

Dalam proses pengembangan aplikasi modern, tahap build dan deployment adalah fase krusial yang menentukan seberapa cepat aplikasi bisa diakses oleh pengguna akhir. Semakin efisien build yang dihasilkan, semakin ringan pula aplikasi dijalankan di browser. Oleh karena itu, optimasi build menjadi hal penting agar proses deployment lebih cepat, ukuran file lebih kecil, dan performa aplikasi meningkat secara keseluruhan.

Selain itu, memahami ukuran bundle JavaScript juga penting. Banyak pengembang tidak menyadari bahwa file hasil build mereka terlalu besar dan memuat banyak kode yang sebenarnya tidak diperlukan. Di sinilah Bundle Analyzer berperan: membantu menganalisis isi bundle dan mengidentifikasi bagian mana yang perlu dioptimasi. Dengan pendekatan ini, kita tidak hanya membangun aplikasi, tetapi juga memastikan performanya optimal di lingkungan produksi.

Mengapa Optimasi Build Itu Penting

Beberapa alasan utama mengapa optimasi build sangat berpengaruh:

  1. Loading Lebih Cepat:
    File hasil build yang kecil dan efisien mempercepat waktu muat halaman.

  2. Pengalaman Pengguna Lebih Baik:
    Pengguna tidak perlu menunggu lama untuk berinteraksi dengan aplikasi.

  3. Deployment Lebih Ringan:
    File yang lebih kecil membuat proses upload ke server atau CDN jadi lebih cepat.

  4. Penggunaan Resource Server Lebih Efisien:
    Server tidak perlu mengirim file besar ke setiap permintaan pengguna.

  5. Mudah Melacak Masalah Performa:
    Dengan analisis bundle, developer tahu mana modul yang bisa dihapus atau dipecah.

Mengaktifkan Mode Produksi (Production Mode)

Langkah paling dasar dalam optimasi build adalah memastikan tool seperti Webpack atau Vite berjalan dalam mode produksi.

Webpack

npx webpack --mode production

Mode ini secara otomatis mengaktifkan berbagai optimasi seperti:

  • Minifikasi JavaScript

  • Tree Shaking

  • Penghapusan komentar dan kode tidak terpakai

Vite

Untuk Vite, mode produksi sudah aktif secara default ketika menjalankan perintah:

npm run build

Hasil build-nya sudah otomatis dioptimalkan dengan tersedianya ESM bundling, minify via esbuild, dan code splitting.

Code Splitting dan Lazy Loading

Code splitting membantu membagi bundle menjadi beberapa bagian kecil. Hal ini memungkinkan browser hanya memuat file yang dibutuhkan.

Contoh di Webpack:

// File: app.js
import('./module.js').then(module => {
  module.runFeature();
});

Contoh di Vite (dynamic import):

const module = await import('./components/Chart.js');
module.initChart();

Dengan cara ini, file besar tidak akan dimuat sekaligus saat halaman pertama kali dibuka.

Tree Shaking

Tree Shaking adalah teknik untuk menghapus kode yang tidak digunakan (dead code).
Agar Tree Shaking bekerja optimal:

  • Gunakan ES Modules (import/export)

  • Pastikan tidak ada side-effect di file yang diekspor

Contoh:

// utils.js
export function used() {}
export function unused() {}

Jika hanya used() yang dipakai, maka unused() akan otomatis dihapus saat build production.

Menggunakan Bundle Analyzer

Bundle Analyzer adalah alat visual untuk melihat isi bundle dan mengetahui seberapa besar setiap modul.
Kita bisa menggunakannya baik di Webpack maupun Vite.

Webpack Bundle Analyzer

Instalasi:

npm install --save-dev webpack-bundle-analyzer

Tambahkan ke konfigurasi:

const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer');

module.exports = {
  plugins: [
    new BundleAnalyzerPlugin({
      analyzerMode: 'static', // hasil dalam file HTML
      openAnalyzer: true,
    }),
  ],
};

Hasilnya, akan muncul visual chart berisi semua modul, lengkap dengan ukuran dan dependensinya.
Dari sana kamu bisa mengidentifikasi modul besar seperti moment.js atau lodash, dan menggantinya dengan versi lebih ringan.

Vite Bundle Visualizer

Untuk Vite, gunakan plugin berikut:

npm install rollup-plugin-visualizer --save-dev

Tambahkan di vite.config.js:

import { visualizer } from 'rollup-plugin-visualizer';

export default {
  plugins: [visualizer({ open: true })],
};

Setelah build, kamu akan mendapatkan laporan interaktif tentang ukuran bundle.
Ini membantu menemukan library besar atau kode yang bisa dipecah menjadi modul terpisah.

Kompresi dan Minifikasi

Gunakan TerserPlugin di Webpack atau esbuild di Vite untuk meminimalkan ukuran JavaScript:

Webpack

npm install terser-webpack-plugin --save-dev

Tambahkan konfigurasi:

const TerserPlugin = require('terser-webpack-plugin');

module.exports = {
  optimization: {
    minimize: true,
    minimizer: [new TerserPlugin()],
  },
};

Vite

Vite sudah menggunakan esbuild secara default yang lebih cepat dan efisien dibanding Terser.
Namun kamu juga bisa menambahkan plugin tambahan untuk kompresi gzip:

npm install vite-plugin-compression --save-dev
import viteCompression from 'vite-plugin-compression';

export default {
  plugins: [viteCompression()],
};

Mengaktifkan Caching dan Hashing

Gunakan content hash agar file hasil build tidak disimpan cache lama oleh browser:

output: {
  filename: '[name].[contenthash].js',
  clean: true,
}

Dengan cara ini, setiap kali kode berubah, hash file juga ikut berubah — memastikan pengguna selalu mendapatkan versi terbaru tanpa perlu menghapus cache manual.

Deployment Otomatis dan Build Efisien

Setelah proses build selesai, langkah berikutnya adalah deployment ke server atau platform hosting seperti:

  • Vercel

  • Netlify

  • Cloudflare Pages

  • AWS S3 / CloudFront

Gunakan CI/CD pipeline seperti GitHub Actions agar proses build dan deployment terjadi otomatis setiap kali ada perubahan di repository:

name: Build and Deploy
on:
  push:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - run: npm install
      - run: npm run build
      - uses: vercel/action@v2
        with:
          token: ${{ secrets.VERCEL_TOKEN }}

Kesimpulan

Melakukan optimasi build bukan hanya soal memperkecil ukuran file, tapi juga tentang efisiensi proses deployment dan pengalaman pengguna. Dengan memahami teknik seperti Tree Shaking, Code Splitting, dan menggunakan Bundle Analyzer, kamu bisa mengidentifikasi bottleneck performa sebelum sampai ke pengguna akhir.

Tool modern seperti Webpack dan Vite telah menyediakan semua mekanisme optimasi ini — tinggal bagaimana kamu memanfaatkannya secara tepat. Ketika build efisien dan bundle kecil, hasilnya adalah aplikasi yang lebih cepat, ringan, dan profesional di mata pengguna maupun mesin pencari.