Lewati ke konten utama
menjadi.dev
Chapter 17.1 Backend Menengah

Bun: Runtime JavaScript yang Super Cepat

Alternatif Node.js dengan speed boost dan built-in tools

Tujuan Pembelajaran

  • Memahami apa itu Bun dan bedanya dengan Node.js
  • Bisa install dan menjalankan Bun
  • Mengerti built-in tools: bundler, test runner, package manager

Analogi

Diagram

      Node.js vs Bun:
Node: npm install → node app.js → jest test → webpack build
Bun: bun install → bun run app → bun test → bun build (semua built-in)
    

Bun adalah all-in-one JavaScript toolkit: runtime, bundler, test runner, dan package manager

Penjelasan Konsep

Kalau kamu sudah familiar dengan Node.js, mungkin kamu merasa workflow-nya terasa ‘berbelit’: npm untuk install package,

Node untuk run, jest untuk test, webpack/rollup untuk bundle, dotenv untuk env vars.

Setiap tool dari vendor berbeda, config-nya beda-beda, dan sering saling bertabrakan.

Bun: All-in-One JavaScript Toolkit

Bun adalah runtime JavaScript modern yang dibuat dengan Zig dan menggunakan JavaScriptCore (engine Safari) alih-alih V8 (engine Chrome/Node).

Hasilnya?

Performa yang signifikan lebih cepat — terutama untuk startup dan I/O operations.

Tapi speed bukanlah satu-satunya keunggulan Bun.

Yang lebih menarik adalah filosofi ‘batteries included’:

  1. Runtime: Jalankan JavaScript/TypeScript (tanpa transpile!)
  2. Package Manager: Install dependency 20-30x lebih cepat dari npm
  3. Bundler: Bundle untuk production (seperti webpack/rollup)
  4. Test Runner: Unit test built-in (seperti jest/vitest)
  5. Shell scripting: Jalankan file .ts/.js seperti bash script

Install Bun

curl -fsSL https://bun.sh/install | bash

Bun vs Node.js: Perbedaan Utama

  1. Speed: Bun lebih cepat 3-4x untuk startup dan 2-3x untuk I/O operations
  2. TypeScript native: Bun bisa langsung jalankan .ts tanpa transpile manual
  3. ESM & CJS: Bun mendukung keduanya tanpa config rumit
  4. Built-in fetch: fetch(), WebSocket(), dan API modern sudah built-in
  5. SQLite built-in: bun:sqlite untuk database SQLite tanpa dependency

Migrasi dari Node.js ke Bun

Bun didesain untuk compatible dengan Node.js. Sebagian besar kode Node.js bisa langsung jalan di Bun tanpa modifikasi.

Tapi ada beberapa perbedaan:

  • Global: process, Buffer, __dirname, __filename semua works
  • Modules: require() dan import both work
  • APIs: fetch(), setTimeout(),

Console — all compatible

  • Native addons: Node-API addons should work

Kapan Pakai Bun?

  • Proyek baru yang butuh speed
  • Scripting dan automation
  • Tooling development
  • Edge computing (Bun runtime ringan)

Kapan Tetap Node.js?

  • Proyek legacy yang sudah stabil
  • Library/framework yang belum support Bun
  • Team yang sudah nyaman dengan ekosistem Node

Contoh Kode

bash
# Install Bun
curl -fsSL https://bun.sh/install | bash

# Cek versi
bun --version

# Init project
bun init

# Install dependency (cepat banget!)
bun install express hono drizzle-orm

# Jalankan TypeScript langsung (tanpa tsc!)
bun run app.ts

# Jalankan dengan watch mode
bun --watch run app.ts

# Test
bun test

# Build untuk production
bun build ./app.ts --outdir ./out

# Run sebagai executable script
bun ./script.ts

Penjelasan Kode

Bun bisa langsung menjalankan TypeScript tanpa compile step. Watch mode untuk development auto-reload.

Prompt AI

Install Bun di sistemmu. Buat file hello.ts yang mencetak 'Hello Bun!', jalankan dengan bun run.

Pertanyaan Reflektif

Bandingkan waktu install dependency antara npm install dan bun install di proyek yang sama.