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
。
自定义加载器
可以通过插件实现对其他文件类型的支持。有关完整文档,请参阅 运行时 > 插件。