Bun.inspect.table: ได้ตารางอ่านง่ายเป็น string ก่อนส่งเข้า log หรือ snapshot
console.table() เหมาะกับการมองใน terminal แต่ถ้าต้องแนบตารางเข้า artifact, snapshot หรือ structured log เราต้องการค่ากลับมาเป็น string Bun.inspect.table() ทำตรงนี้ได้ และยังเลือกรายการ property ที่จะแสดงกับปิด ANSI color ได้
กรณีใช้บ่อยคือสรุปผลหลาย job หลังจบ pipeline แล้วส่งผ่าน logger เพียงครั้งเดียว การคืน string ยังทำให้เทสต์เงื่อนไขสำคัญได้โดยไม่ต้องดัก stdout
const rows = [
{ job: "lint", ms: 42, status: "ok", internalId: "a1" },
{ job: "build", ms: 318, status: "ok", internalId: "b7" },
];
const report = Bun.inspect.table(
rows,
["job", "ms", "status"],
{ colors: false },
);
if (!report.includes("build") || !report.includes("318")) {
throw new Error(`unexpected report: ${report}`);
}
if (report.includes("internalId")) {
throw new Error("property filter leaked internalId");
}
console.log(report);
ใช้อย่างมีขอบเขต
ตารางนี้ยังเป็นข้อความสำหรับคนอ่าน ไม่ใช่รูปแบบแลกเปลี่ยนข้อมูล อย่า parse กลับเป็น object หรือใช้แทน JSON ในระบบที่ต้อง query field หากระบบเก็บ log แบบ structured ให้ส่ง rows เป็น field เดิม แล้วเพิ่ม report เฉพาะช่องทางที่มนุษย์อ่าน
การตั้ง { colors: false } สำคัญกับ snapshot, ไฟล์ และ CI เพราะ escape sequence ทำให้ diff อ่านยาก ส่วน terminal แบบ interactive เปิดสีได้ตามบริบท และ property filter ช่วยไม่ให้ field ภายในหรือข้อมูลละเอียดเกินจำเป็นหลุดเข้า output
Recap
- ใช้
Bun.inspect.tableเมื่อปลายทางต้องการ string - ปิด color ใน CI และ snapshot
- เลือก properties เพื่อคุมทั้งความกว้างและข้อมูลที่เผย
- เก็บ object เดิมไว้สำหรับ machine-readable logging