TypeScript
Bun 原生支援 TypeScript。在執行所有檔案之前,Bun 的快速原生轉譯器會即時轉譯。與其他建置工具類似,Bun 不會執行類型檢查;它只會從檔案中移除類型註解。
bun index.js
bun index.jsx
bun index.ts
bun index.tsx
Bun 執行時期行為的某些方面會受到 tsconfig.json
檔案內容的影響。有關詳細資訊,請參閱 執行時期 > TypeScript 頁面。
JSX
Bun 原生支援 .jsx
和 .tsx
檔案。Bun 的內部轉譯器會在執行之前將 JSX 語法轉換為純 JavaScript。
function Component(props: {message: string}) {
return (
<body>
<h1 style={{color: 'red'}}>{props.message}</h1>
</body>
);
}
console.log(<Component message="Hello world!" />);
Bun 實作了 JSX 的特殊記錄,以簡化除錯。
bun run react.tsx
<Component message="Hello world!" />
文字檔
文字檔可以當作字串匯入。
import text from "./text.txt";
console.log(text);
// => "Hello world!"
Hello world!
JSON 和 TOML
JSON 和 TOML 檔可以直接從來源檔匯入。內容將會載入並以 JavaScript 物件回傳。
import pkg from "./package.json";
import data from "./data.toml";
WASM
🚧 實驗性質
Bun 實驗性地支援 WASI,即 WebAssembly 系統介面。若要使用 Bun 執行 .wasm
二進位檔
bun ./my-wasm-app.wasm
# if the filename doesn't end with ".wasm"
bun run ./my-wasm-app.whatever
注意 — WASI 支援是基於 wasi-js。目前,它僅支援使用 wasi_snapshot_preview1
或 wasi_unstable
API 的 WASI 二進位檔。Bun 的實作尚未針對效能進行最佳化;隨著 WASM 的普及,這將會成為更優先的事項。
SQLite
你可以直接將 sqlite 資料庫匯入你的程式碼中。Bun 會自動載入資料庫並回傳一個 Database
物件。
import db from "./my.db" with {type: "sqlite"};
console.log(db.query("select * from users LIMIT 1").get());
這會使用 bun:sqlite
。
自訂載入器
可以透過外掛程式實作對其他檔案類型的支援。請參閱 執行時期 > 外掛程式 以取得完整文件。