Category: reference
Bun Runtime — JavaScript runtime ที่เร็วกว่า Node
คู่มือ Bun — runtime ที่รวม bundler, test runner และ package manager ไว้ด้วยกัน ใช้แทน Node + npm ได้เลย
สารบัญ
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 อาจมีปัญหา