Bun

檔案類型

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。

react.tsx
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!" />

文字檔

文字檔可以當作字串匯入。

index.ts
text.txt
index.ts
import text from "./text.txt";
console.log(text);
// => "Hello world!"
text.txt
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_preview1wasi_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

自訂載入器

可以透過外掛程式實作對其他檔案類型的支援。請參閱 執行時期 > 外掛程式 以取得完整文件。