bun

Bun

Bun 封面图

1. Bun 详解

Bun 是一个现代的 JavaScript 运行时和工具套件,旨在提高开发效率和性能。以下是对 Bun 的详细介绍:

2. Bun 的特点

2.1 高性能

  • 启动速度快:Bun 的启动速度非常快,能够显著减少开发和运行时的等待时间。
  • 高效的包管理:Bun 的包管理速度比 npm 和 Yarn 快很多,安装依赖的速度可以快 10 倍。

2.2 内置功能

  • 自动加载环境变量:Bun 会自动从 .env 文件中加载环境变量,不需要额外的库(如 dotenv)。
  • 内置支持现代 JavaScript 特性:Bun 支持诸如 fetch、WebSocket 和 ReadableStream 等 Web API。
  • 兼容 Node.js:Bun 实现了 Node.js 的模块解析算法,可以在 Bun 中使用 npm 包,同时支持 ESM 和 CommonJS。

2.3 开发者体验

  • 一体化工具:Bun 提供了打包、转译、测试和包管理等一体化工具,简化了开发流程。
  • 内置测试运行器:Bun 提供了一个快速的、内置的、兼容 Jest 的测试运行器。
  • 热重载功能:Bun 支持热重载,可以在保留应用程序状态的同时动态刷新代码更改。

3. 常用命令

3.1 安装 Bun

curl https://bun.sh/install | bash

这条命令会下载并安装 Bun。

3.2 添加依赖

bun add <package-name>

等同于 yarn add 或 npm install。例如:

bun add react

这条命令会安装 react 包。

3.3 安装项目依赖

bun install

等同于 yarn install 或 npm install。这条命令会安装 package.json 中列出的所有依赖项。

3.4 运行脚本

bun run <script-name>

类似于 npm run。例如:

bun run start

这条命令会运行 package.json 中定义的 start 脚本。

3.5 创建新项目

bun create <template-name>

通过该命令可以从命令行快速生成项目模板。例如:

bun create react-app

这条命令会创建一个新的 React 项目。

3.6 测试运行器

bun test

Bun 提供了一个快速的、内置的、兼容 Jest 的测试运行器。

3.7 查看已安装的包

bun pm ls --all

打印所有已安装的依赖项,包括传递依赖(依赖的依赖)。

3.8 打印全局二进制路径

bun pm bin -g

打印全局安装的二进制文件路径。

4. 与 npm 和 Yarn 的比较

4.1 命令对比表格

功能 Bun 命令 npm 命令 Yarn 命令
安装依赖 bun add <package-name> npm install <package-name> yarn add <package-name>
安装项目依赖 bun install npm install yarn install
运行脚本 bun run <script-name> npm run <script-name> yarn run <script-name>
创建新项目 bun create <template-name> npm create <template-name> yarn create <template-name>
查看已安装的包 bun pm ls --all npm list --all yarn list --all
打印全局二进制路径 bun pm bin -g N/A N/A

4.2 性能比较

  • 安装速度:Bun 的安装速度显著快于 npm 和 Yarn。
  • 运行速度:Bun 的运行速度也比 npm 和 Yarn 快。

4.3 内置功能

  • 自动加载环境变量:Bun 会自动从 .env 文件中加载环境变量,而 npm 和 Yarn 需要额外的库(如 dotenv)来实现这一功能。
  • 内置支持现代 JavaScript 特性:Bun 支持诸如 fetch、WebSocket 和 ReadableStream 等 Web API,而 npm 和 Yarn 需要额外的库来支持这些功能。
  • 兼容 Node.js:Bun 实现了 Node.js 的模块解析算法,可以在 Bun 中使用 npm 包,同时支持 ESM 和 CommonJS。

5. 补充内容

5.1 环境配置

  • Node.js 环境(可选)
    Bun 是独立的 JavaScript 运行时,安装 Bun 本身并不依赖 Node.js。不过,部分 npm 包可能依赖 Node.js 特有的 API 或原生模块,如需使用这些包,可同时安装 Node.js,例如通过 nvm:

    # 使用 nvm 安装 Node.js
    nvm install node
    

5.2 常见问题解答(FAQ)

  • 如何解决安装依赖时的网络问题?
    如果在安装依赖时遇到网络问题,可以尝试使用代理或更换镜像源。例如,可以换用国内 npm 镜像源(npmmirror):

    npm config set registry https://registry.npmmirror.com
    
  • 如何查看 Bun 的版本?
    可以使用以下命令查看当前安装的 Bun 版本:

    bun --version
    

5.3 参考资料