TLDR #
Bun adalah runtime JavaScript modern yang dikembangkan oleh Jarred Sumner dan dirilis pada Juli 2022. Bun bukan sekadar pengganti Node.js — ia adalah toolkit all-in-one yang mencakup runtime, package manager (bun install), bundler, dan test runner dalam satu file biner. Dibangun dengan Zig dan menggunakan JavaScriptCore (bukan V8), Bun mampu menjalankan kode 4 kali lebih cepat dari Node.js. Artikel ini akan memandumu memulai Bun dari instalasi hingga membuat REST API sederhana.
Pendahuluan #
Node.js telah menjadi standar runtime JavaScript selama 15 tahun terakhir. Namun seiring waktu, beberapa kelemahannya mulai terasa: package manager npm yang lambat, konfigurasi bundler yang rumit (Webpack, Vite, Rollup), dan inisialisasi proyek yang membutuhkan banyak boilerplate.
Bun hadir untuk menjawab semua masalah ini dalam satu paket.
Dengan Bun, kamu tidak perlu menginstal npm terpisah, tidak perlu Webpack untuk bundling, dan tidak perlu Jest atau Vitest untuk testing. Semua sudah termasuk dalam satu file biner berukuran sekitar 40 MB. Yang paling penting: Bun bisa 4-10 kali lebih cepat dalam instalasi package dan 2-4 kali lebih cepat dalam eksekusi kode.
Bagi kamu yang suka vibe coding — menulis kode cepat tanpa banyak setup — Bun adalah pilihan yang tepat.
Konten Utama #
1. Apa Keunggulan Bun Dibanding Node.js? #
| Fitur | Node.js | Bun |
|---|---|---|
| Runtime Engine | V8 (C++) | JavaScriptCore (WebKit) |
| Ukuran instalasi | ~30 MB + npm | ~40 MB (all-in-one) |
| Package manager | npm / yarn / pnpm (terpisah) | bun install (built-in, 10-30x lebih cepat) |
| Bundler | Webpack, Rollup, Vite (terpisah) | bun build (built-in, esbuild-based) |
| Test runner | Jest, Vitest (terpisah) | bun test (built-in, kompatibel Jest API) |
| TypeScript | Butuh ts-node atau compile dulu | Native (jalan langsung tanpa config) |
| File I/O | Libuv + callback | Libuv + POSIX API async |
| Kecepatan | Standar | 4x lebih cepat pada benchmark |
2. Instalasi Bun #
Instalasi Bun sangat mudah. Cukup satu perintah:
curl -fsSL https://bun.sh/install | bashAtau jika lebih suka menggunakan npm:
npm install -g bunUntuk pengguna Linux (Debian/Ubuntu), bisa juga pakai:
sudo apt install unzip
curl -fsSL https://bun.sh/install | bashSetelah terinstal, verifikasi:
bun --version
# contoh output: 1.2.83. Perintah Dasar Bun #
Inisialisasi Proyek #
# Buat folder dan masuk
mkdir my-bun-project
cd my-bun-project
# Inisialisasi package.json
bun initPerintah bun init akan membuat file berikut secara interaktif:
package.jsontsconfig.json(jika pakai TypeScript)index.ts(file entry point)
Manajemen Package #
# Install semua dependensi dari package.json
bun install
# Tambah package baru (dengan nama pendek dan cepat!)
bun add express
bun add zod
bun add @types/node -d
# Hapus package
bun remove express
# Update semua package
bun updateBun menggunakan binary cache yang membuatnya 10-30x lebih cepat dari npm. Bahkan untuk proyek dengan 100+ dependensi, bun install selesai dalam 1-2 detik.
Menjalankan Kode #
# Jalankan file
bun run index.ts
# Jalankan script dari package.json
bun run dev
# Jalankan langsung kode inline
bun -e "console.log('Hello Bun!')"4. Bun Native TypeScript — Tanpa Config #
Salah satu fitur terbaik Bun: tidak perlu konfigurasi TypeScript. Bun bisa menjalankan file .ts langsung tanpa tsconfig.json atau ts-node.
// hello.ts
const name: string = "Bun";
console.log(`Hello ${name}!`);
// Jalankan langsung:
// bun run hello.ts
Fitur yang langsung berfungsi:
- Tipe statis TypeScript
- Import path alias
- Environment variable dari
.env - JSX/TSX untuk React
5. Membuat REST API dengan Bun + Hono #
Mari kita buat REST API sederhana menggunakan Hono — framework web ringan yang cocok dipasangkan dengan Bun.
Step 1: Inisialisasi proyek #
mkdir bun-hono-api
cd bun-hono-api
bun initStep 2: Install Hono #
bun add honoStep 3: Buat file index.ts
#
import { Hono } from 'hono';
import { cors } from 'hono/cors';
const app = new Hono();
// Middleware CORS
app.use('/*', cors());
// Route: GET / — Hello
app.get('/', (c) => {
return c.json({ message: 'Halo dari Bun + Hono!' });
});
// Route: GET /api/users
app.get('/api/users', (c) => {
const users = [
{ id: 1, name: 'Budi' },
{ id: 2, name: 'Ani' },
{ id: 3, name: 'Citra' },
];
return c.json(users);
});
// Route: POST /api/users
app.post('/api/users', async (c) => {
const body = await c.req.json();
return c.json(
{ message: 'User created', user: body },
201,
);
});
// Route: GET /api/hello/:name
app.get('/api/hello/:name', (c) => {
const name = c.req.param('name');
return c.json({ message: `Hello, ${name}!` });
});
export default app;Step 4: Jalankan server #
bun run index.tsAtau gunakan mode watch (auto restart saat file berubah):
bun --watch run index.tsServer berjalan di http://localhost:3000. Coba akses:
curl http://localhost:3000/
curl http://localhost:3000/api/users
curl http://localhost:3000/api/hello/Pak%20Gun6. Bun Package Manager — Kenapa Lebih Cepat? #
Perbandingan kecepatan install package (100 package):
| Tool | Waktu Instalasi |
|---|---|
| npm | ~45 detik |
| yarn | ~35 detik |
| pnpm | ~25 detik |
| bun install | ~1.5 detik 🚀 |
Bun menggunakan beberapa teknik untuk mencapai kecepatan ini:
- Global binary cache: Package yang pernah diunduh disimpan, install berikutnya instan
- Request batching: Semua request HTTP dikirim paralel
- Zig implementation: Manajemen memori lebih efisien tanpa GC overhead
- JavaScriptCore optimization: Start-up time lebih cepat dari V8
7. Bun Test Runner #
Bun memiliki test runner internal yang kompatibel dengan Jest API:
// math.ts
export function add(a: number, b: number): number {
return a + b;
}
export function divide(a: number, b: number): number {
if (b === 0) throw new Error('Cannot divide by zero');
return a / b;
}// math.test.ts
import { describe, expect, test } from 'bun:test';
import { add, divide } from './math';
describe('Math functions', () => {
test('add(2, 3) should return 5', () => {
expect(add(2, 3)).toBe(5);
});
test('divide(10, 2) should return 5', () => {
expect(divide(10, 2)).toBe(5);
});
test('divide by zero should throw', () => {
expect(() => divide(5, 0)).toThrow('Cannot divide by zero');
});
});Jalankan:
bun testHasil: output berwarna, waktu eksekusi cepat, dan format yang mudah dibaca.
8. Bun Build — Bundler Bawaan #
Bun bisa menggantikan Webpack atau Rollup untuk proyek sederhana:
# Build file TypeScript ke JavaScript
bun build index.ts --outdir=./dist
# Build untuk production (minify)
bun build index.ts --outdir=./dist --minify
# Build dengan sourcemap
bun build index.ts --outdir=./dist --sourcemap=externalContoh bundling aplikasi Hono:
bun build index.ts --outdir=./dist --target=bunFile output di ./dist/index.js siap di-deploy.
9. Deploy Bun dengan Docker #
Bun juga bisa di-container-kan dengan Docker. Contoh Dockerfile minimal:
FROM oven/bun:latest
WORKDIR /app
# Copy package files
COPY package.json bun.lock ./
RUN bun install
# Copy source code
COPY . .
# Expose port
EXPOSE 3000
# Run
CMD ["bun", "run", "index.ts"]Build dan jalankan:
docker build -t bun-api .
docker run -d -p 3000:3000 bun-apiDengan ukuran image sekitar 150 MB (vs Node.js yang 300+ MB), Bun sangat cocok untuk deployment container yang efisien.
10. Kapan Sebaiknya Pakai Bun? #
Cocok untuk:
- REST API dengan framework ringan (Hono, Elysia)
- CLI tools dan script automation
- Proyek vibe coding yang butuh setup cepat
- Aplikasi real-time (WebSocket)
- Microservices dengan container
Kurang cocok untuk:
- Proyek yang bergantung pada native Node.js modules (C++ addons)
- Aplikasi yang membutuhkan ekosistem tools lama (gulp, grunt, dll.)
- Proyek enterprise dengan ribuan dependensi yang sudah mature di Node.js
Kesimpulan #
Bun adalah masa depan runtime JavaScript. Dengan kecepatan eksekusi yang luar biasa, tool all-in-one yang terintegrasi, dan dukungan TypeScript native, Bun membuat pengalaman coding menjadi lebih cepat dan menyenangkan.
Bagi kamu yang suka vibe coding — tinggal install, buat file, dan langsung jalan tanpa ribet setup — Bun adalah pilihan yang sulit ditandingi. Mulailah dengan proyek kecil seperti REST API dengan Hono, dan rasakan sendiri perbedaan kecepatannya.
Langkah selanjutnya:
- Install Bun di sistemmu
- Coba
bun inituntuk proyek pertama - Buat REST API sederhana dengan Hono
- Bandingkan sendiri kecepatannya dengan Node.js
Selamat vibe coding dengan Bun! ⚡🚀
Artikel ini ditulis dengan bantuan AI dan telah diedit oleh tim GezyTech.