กลับไปหน้าสูตร
#bun#javascript#typescript#runtime#cli#cheatsheet
Bun CLI Cheatsheet
คู่มือฉบับสมบูรณ์ Bun CLI: เจาะลึกความเร็วในการจัดการ Packages, เทคนิคการใช้ Macros, การทำ Testing ขั้นสูง และ Bun Shell
11 มีนาคม 2569อ่านประมาณ 2 นาที
สารบัญสูตร
⚡ Runtime & Execution (bun run)
| Command | ประโยชน์ |
|---|---|
bun [file.ts] | รันไฟล์ TS/JS ได้ทันที โดยไม่ต้องลง ts-node หรือ tsx |
bun --hot [file.ts] | เปิดใช้งาน Hot Reload (รันใหม่ทันทีที่เซฟไฟล์) |
bun --watch [file.ts] | เปิดใช้งาน Watch Mode (เฝ้าดูความเปลี่ยนแปลง) |
bun run [script] | รัน package.json scripts เร็วกว่า npm 20-30 เท่า |
bun x [pkg] | รัน binary จาก npm (เหมือน npx) แต่ใช้ Cache ของ Bun |
📦 Package Management (The Fastest Tool)
| Command | การใช้งานเจาะลึก |
|---|---|
bun install | ติดตั้ง Dependencies ทั้งหมด (เร็วมากเพราะใช้ Hardlinks) |
bun add [pkg] | แอด Package ใหม่ (เหมือน npm install) |
bun add [pkg] --dev | แอดเข้า devDependencies (เหมือน -D) |
bun remove [pkg] | ลบ Package |
bun update | อัปเดต Packages (ใช้ lockfile แบบไบนารี bun.lockb) |
bun pm cache | ดูและล้าง Cache ของ Package |
bun pm ls | แสดงผล Dependencies เป็น Tree |
🧪 Testing (Native Test Runner)
Bun มีระบบเทสที่ใช้ jest syntax แต่เร็วกว่ามหาศาล:
bun test: รันไฟล์เทสทั้งหมด (*.test.ts,*.spec.ts)bun test --watch: เฝ้าดูและรันเทสซ้ำอัตโนมัติbun test --bail: หยุดรันทันทีที่เจอเทสพังครั้งแรกbun test --timeout 5000: ตั้งเวลา timeout ให้เทส (Default 5s)bun test --coverage: แสดงรายงานความครอบคลุมของโค้ด (Coverage)
🛠 Advanced Features: Macros & Shell
🧬 Bun Macros (Compile-time Execution)
คุณสามารถสั่งรันโค้ด JS ในขั้นตอนคอมไพล์เพื่อดึงข้อมูลมาฝังไว้ในโค้ดได้:
import { getGitCommit } from "./git-utils.ts" with { type: "macro" };
console.log(`Build Version: ${getGitCommit()}`);
🐚 Bun Shell (Cross-platform Scripting)
Bun มี Shell ในตัวที่รันบน Windows/Mac/Linux ได้เหมือนกัน:
import { $ } from "bun";
// รันคำสั่ง shell โดยตรงในไฟล์ TS
await $`ls -la`.text();
⚙️ Project Configuration (`bunfig.toml`)
การตั้งค่าเพื่อรีดประสิทธิภาพสูงสุด:
[install]
# ตั้งค่า Registry (ถ้าใช้ Verdaccio หรือ Nexus)
registry = "https://registry.npmjs.org"
# บังคับใช้ HTTPS
https = true
[test]
# แสดงผลการเทสแบบละเอียด
reporters = ["pretty"]
[run]
# เปิดใช้งาน Hot Reload สำหรับทุกคำสั่งรัน
hot = true
🚀 Building & Compiling
bun build ./index.ts --outdir ./dist: บิลด์โปรเจกต์ (Bundle)bun build ./index.ts --compile --outfile my-app: คอมไพล์เป็นไฟล์ Single Binary (ส่งให้คนอื่นรันได้เลยโดยไม่ต้องลง Node/Bun)bun build --target node: บิลด์เพื่อเอาไปรันบน Node.js
📅 Professional Workflows
1) การเช็กและล้าง Cache เมื่อเจอไฟล์พัง
bun pm cache rm
bun install --force
2) การรัน SQLite แบบไม่ต้องลง Lib เพิ่ม
Bun มี SQLite ในตัว (bun:sqlite):
# รันไฟล์ที่มีการใช้ฐานข้อมูล
bun database-init.ts
3) การรันเทสเฉพาะจุดที่มีการเปลี่ยนแปลง
bun test --watch --test-name-pattern "auth"
4) การสร้าง Binary สำหรับแชร์เครื่องอื่น
# บิลด์เป็นไฟล์เดียวที่รันได้ทันที
bun build src/index.ts --compile --outfile build/my-tool
🚀 Why Bun?
- All-in-one: เป็นทั้ง Runtime, Package Manager, Bundler และ Test Runner
- Native Support: รองรับ
.ts,.jsx,.tsxตั้งแต่เกิด - SQLite Support: มีฐานข้อมูล SQL ความเร็วสูงมาให้ในตัว
- Env Support: อ่านไฟล์
.envอัตโนมัติ (ไม่ต้องใช้dotenv)