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

自定义加载器

可以通过插件实现对其他文件类型的支持。有关完整文档,请参阅 运行时 > 插件