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";

WASI

🚧 實驗性功能

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

自訂載入器

可以使用外掛程式實作對其他檔案類型的支援。完整文件請參閱 執行階段 > 外掛程式