Typescript
Bun 原生支持開箱即用的 TypeScript。所有文件在執行之前都由 Bun 的快速本機轉譯器即時轉譯。與其他構建工具類似,Bun 不執行類型檢查;它只是從文件中刪除類型注釋。
bun index.js
bun index.jsx
bun index.ts
bun index.tsx
Bun 運行時行為的某些方面會受到您tsconfig.json
文件內容的影響。有關詳細信息,請參閱?Runtime > TypeScript?頁面。
JSX
Bun 支持開箱即用的?.jsx
?和?.tsx
?文件。Bun 的內部轉譯器在執行之前將 JSX 語法轉換為普通的 JavaScript。
//react.tsxfunction 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!" />
文本文件?
文本文件可以作為字符串導入。
// text.txt
Hello world!// index.ts
import text from "./text.txt";
console.log(text);
// => "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());
使用文檔:SQLite – API | Bun Docs
自定義加載器
可以通過插件實現對其他文件類型的支持。有關完整文檔,請參閱運行時>插件。