> ## Documentation Index
> Fetch the complete documentation index at: https://bun.ll1025.cn/llms.txt
> Use this file to discover all available pages before exploring further.

# 欢迎使用 Bun

> Bun 是开发现代 JavaScript/TypeScript 应用程序的一体化工具包。

<CardGroup>
  <Card
    icon="cog"
    title="Bun 运行时"
    href="/runtime"
    cta={
  <span>
    开始使用 <code>bun run</code>
  </span>
}
  >
    一个快速的 JavaScript 运行时，设计为 Node.js 的直接替代品
  </Card>

  <Card
    icon="box"
    title="Bun 包管理器"
    href="/pm/cli/install"
    cta={
  <span>
    开始使用 <code>bun install</code>
  </span>
}
  >
    比 npm 快 30 倍的包安装速度，支持全局缓存和 Workspace
  </Card>

  <Card
    icon="flask-conical"
    title="Bun 测试运行器"
    href="/test"
    cta={
  <span>
    开始使用 <code>bun test</code>
  </span>
}
  >
    兼容 Jest，TypeScript 优先，支持快照、DOM 和监听模式
  </Card>

  <Card
    icon="combine"
    title="Bun 打包器"
    href="/bundler"
    cta={
  <span>
    开始使用 <code>bun build</code>
  </span>
}
  >
    为浏览器和服务器打包 TypeScript、JSX、React 和 CSS
  </Card>
</CardGroup>

***

## 开始上手

Bun 作为一个独立的、无依赖的二进制文件发布，包含运行时、包管理器、测试运行器和打包器。Bun 新手？

<CardGroup>
  <Card icon="download" title="安装 Bun" href="/installation">
    支持的平台和所有安装方法。
  </Card>

  <Card icon="zap" title="快速入门" href="/quickstart">
    几分钟内用 Bun.serve 写出 Hello World。
  </Card>
</CardGroup>

***

## 内含功能

* **运行时**：以近乎零开销执行 JavaScript/TypeScript 文件和包脚本。
* **包管理器**：通过 `bun install` 实现快速安装、Workspace、Overrides 和审计。
* **测试运行器**：兼容 Jest、TypeScript 优先，支持快照、DOM 和监听模式。
* **打包器**：原生打包 JS/TS/JSX，支持代码分割、插件和 HTML 导入。

使用上面的卡片探索每个领域。每个部分都包含概述、快速示例、参考和最佳实践，便于快速浏览和深入学习。

***

## 什么是 Bun？

Bun 是一个面向 JavaScript 和 TypeScript 应用程序的一体化工具包。它作为一个名为 `bun` 的单一可执行文件发布。

其核心是 *Bun 运行时*，一个快速的 JavaScript 运行时，设计为 **Node.js 的直接替代品**。它使用 Rust 编写，底层由 JavaScriptCore 驱动，降低了启动时间和内存占用。

```bash terminal icon="terminal" theme={null}
bun run index.tsx  # 默认支持 TS 和 JSX
```

`bun` 命令行工具还实现了测试运行器、脚本运行器和 Node.js 兼容的包管理器，所有这些都显著快于现有工具，并且可以在现有 Node.js 项目中直接使用，几乎无需修改。

```bash terminal icon="terminal" theme={null}
bun run start                 # 运行 `start` 脚本
bun install <pkg>             # 安装包
bun build ./index.tsx         # 为浏览器打包项目
bun test                      # 运行测试
bunx cowsay 'Hello, world!'   # 执行一个包
```

## 什么是运行时？

JavaScript（或者更正式地说，ECMAScript）只是一种编程语言的 *规范*。任何人都可以编写一个 JavaScript *引擎*，读取有效的 JavaScript 程序并执行它。目前最流行的两个引擎是 V8（由 Google 开发）和 JavaScriptCore（由 Apple 开发）。两者都是开源的。

但大多数 JavaScript 程序并不是在真空中运行的。它们需要一种方式来访问外部世界以执行有用的任务。这就是 *运行时* 的作用所在。它们实现了额外的 API，并将这些 API 提供给执行的 JavaScript 程序使用。

### 浏览器

浏览器内置了 JavaScript 运行时，实现了一套 Web 特定的 API，暴露在全局的 `window` 对象上。浏览器执行的任何 JavaScript 代码都可以使用这些 API 来为当前网页添加交互或动态行为。

### Node.js

Node.js 是一个适用于非浏览器环境（如服务器）的 JavaScript 运行时。由 Node.js 执行的 JavaScript 程序可以访问一套 Node.js 特定的[全局对象](https://nodejs.org/api/globals.html)，如 `Buffer`、`process` 和 `__dirname`，此外还有用于操作系统级任务（如读写文件）的内置模块（`node:fs`）和网络模块（`node:net`、`node:http`）。Node.js 还实现了基于 CommonJS 的模块系统和解析算法，这早于 JavaScript 的原生模块系统。

Bun 被设计为 Node.js 的更快速、更精简、更现代的替代品。

## 设计目标

Bun 从头开始设计，始终考虑当今的 JavaScript 生态系统。

* **速度**。Bun 进程启动[比 Node.js 快 4 倍](https://twitter.com/jarredsumner/status/1499225725492076544)。
* **TypeScript 和 JSX 支持**。你可以直接执行 `.jsx`、`.ts` 和 `.tsx` 文件；Bun 的转译器会在执行前将它们转换为原生 JavaScript。
* **ESM 和 CommonJS 兼容**。世界正在向 ES 模块（ESM）迁移，但 npm 上仍有数百万个包需要使用 CommonJS。Bun 推荐使用 ES 模块，但同时也支持 CommonJS。
* **Web 标准 API**。Bun 实现了标准的 Web API，如 `fetch`、`WebSocket` 和 `ReadableStream`。Bun 基于 Apple 为 Safari 开发的 JavaScriptCore 引擎，因此某些 API（如 [`Headers`](https://developer.mozilla.org/en-US/docs/Web/API/Headers) 和 [`URL`](https://developer.mozilla.org/en-US/docs/Web/API/URL)）直接使用了 [Safari 的实现](https://github.com/oven-sh/bun/blob/HEAD/src/jsc/bindings/webcore/JSFetchHeaders.cpp)。
* **Node.js 兼容性**。除了支持 Node 风格的模块解析外，Bun 还致力于与 Node.js 内置全局对象（`process`、`Buffer`）和模块（`path`、`fs`、`http`）实现完全兼容。*这是一项持续进行的工作。* 查看 [Node.js 兼容性](/runtime/nodejs-compat)了解当前状态。

Bun 不仅仅是一个运行时。其长期目标是成为一个用于使用 JavaScript/TypeScript 构建应用程序的凝聚性基础设施工具包：包管理器、转译器、打包器、脚本运行器和测试运行器。
