ข้ามไปเนื้อหาหลัก

Category: reference

Bun Runtime — JavaScript runtime ที่เร็วกว่า Node

คู่มือ Bun — runtime ที่รวม bundler, test runner และ package manager ไว้ด้วยกัน ใช้แทน Node + npm ได้เลย

· อ่านประมาณ 1 นาที

สารบัญ

Bun คืออะไร

Bun เป็น JavaScript runtime ที่เขียนด้วย Zig + JavaScriptCore (ไม่ใช่ V8) — เร็วกว่า Node.js ประมาณ 3-5× สำหรับ startup time และมี bundler, test runner, package manager ในตัว

ติดตั้ง

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

ใช้แทน Node

bun run script.ts     # รัน TypeScript ได้เลย ไม่ต้อง compile
bun run start         # เหมือน npm run start
bun install           # เหมือน npm install แต่เร็วกว่า 20-25×
bun add express       # เหมือน npm install express

Bun HTTP Server

// server.ts
Bun.serve({
  port: 3000,
  fetch(request) {
    const url = new URL(request.url);
    if (url.pathname === '/') {
      return new Response('Hello from Bun!');
    }
    return new Response('Not found', { status: 404 });
  },
});

console.log('Server running at http://localhost:3000');

Bun Test Runner

// sum.test.ts
import { expect, test, describe } from 'bun:test';
import { sum } from './sum';

describe('sum', () => {
  test('adds two numbers', () => {
    expect(sum(1, 2)).toBe(3);
  });
});
bun test             # รัน tests ทั้งหมด
bun test --watch     # watch mode

Bun Bundler

bun build src/index.ts --outdir dist --target browser
bun build src/index.ts --outdir dist --target node

SQLite built-in

import { Database } from 'bun:sqlite';

const db = new Database('mydb.sqlite');
db.run('CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)');

const insert = db.prepare('INSERT INTO users (name) VALUES (?)');
insert.run('Panupong');

const users = db.query('SELECT * FROM users').all();

เมื่อไหร่ควรใช้ Bun

  • Scripts ที่ต้องการ startup เร็ว (CLI tools)
  • Project ใหม่ที่ไม่มี legacy Node.js ผูกติดอยู่
  • Test runner ที่ต้องการ speed

ข้อระวัง: Bun ยังไม่ 100% compatible กับ Node.js ecosystem — บาง native addons หรือ node: modules อาจมีปัญหา