กลับไปหน้าสูตร
#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)

สูตรอื่นๆ

สูตรก่อนหน้า

Claude Code Cheatsheet

ไม่มีสูตรถัดไป