Bun:一个替代 Node.js 的 JavaScript 全家桶工具

Bun:一个替代 Node.js 的 JavaScript 全家桶工具

文章目录

  • Bun:一个替代 Node.js 的 JavaScript 全家桶工具

Bun:一个替代 Node.js 的 JavaScript 全家桶工具

Bun 是一个面向 JavaScript 和 TypeScript 应用的全能工具集,在 GitHub 上拿到了 93,129 个 Star:

Bun 的核心是一个 JavaScript 运行时,定位为 Node.js 的直接替代品。底层用 Zig 编写,引擎选用 JavaScriptCore(Safari 的 JS 引擎),启动速度和内存占用相比 Node.js 有明显改善。

一条命令就能跑 TypeScript 或 JSX,不需要额外配置编译步骤:

bun run index.tsx

除了运行时,Bun 还自带包管理器、测试运行器和脚本运行器。日常开发中需要的 npm、npx、jest 等工具,在 Bun 里被整合成了一个可执行文件。

bun test # 跑测试 bun run start # 执行 package.json 中的 start 脚本 bun install <pkg> # 安装依赖 bunx cowsay 'Hello, world!' # 运行一个 npm 包

Bun 的包管理器兼容 Node.js 生态,已有的 Node.js 项目可以直接切换过去,基本不需要改动代码。

安装

Bun 支持 Linux(x64 和 arm64)、macOS(x64 和 Apple Silicon)、Windows(x64 和 arm64)三个平台。

# 推荐方式curl-fsSLhttps://bun.com/install|bash# Windowspowershell-c"irm bun.sh/install.ps1 | iex"# 通过 npmnpminstall-gbun# 通过 Homebrewbrew tap oven-sh/bun brewinstallbun

升级到最新版本:

bun upgrade

也可以切到每日构建版本(canary),获取最新的修复和功能:

bun upgrade --canary

核心能力

Bun 的工具链覆盖面比较全,主要包含以下部分:

  • 运行时:支持 TS、JSX、ESM,内置 Node.js 兼容层,大部分 Node.js 代码可以直接运行
  • 包管理器bun installbun addbun remove,全局缓存和锁文件机制齐全
  • 测试运行器bun test兼容 Jest 风格的 API,支持 mock、快照、代码覆盖率
  • 打包器Bun.build提供了原生的打包能力,支持代码分割、tree shaking、字节码缓存
  • HTTP 服务器Bun.serve内置了 HTTP 服务器,支持 WebSocket、路由、SSE
  • 数据库客户端:内置 SQLite、PostgreSQL、Redis 的原生支持
  • 文件系统:流式读写、tar 归档、glob 匹配等常用操作都有对应的 API
  • Shell:内置了类似 bash 的 Shell 能力,可以在 JS 中直接执行系统命令

Bun 的 API 设计大量借鉴了 Web 标准(fetch、Response、ReadableStream 等),对前端开发者来说上手成本较低。

与 Node.js 的关系

Bun 的定位是兼容并替代 Node.js,而非另起炉灶。它实现了 Node.js 的核心模块(fs、path、http 等),大部分 npm 包可以不加修改地运行。对于启动速度敏感的场景(CLI 工具、serverless 函数、CI 流水线),Bun 的优势会比较明显。

目前 Bun 并非所有 Node.js API 都已完整实现,一些依赖原生模块(C++ addon)的包可能还存在兼容问题。项目在持续迭代中,每次版本发布都会补充新的 Node.js 兼容性。

项目状态

Bun 由 Jarred Sumner 创建,目前由 Oven 团队维护。项目更新频率很高,基本每周都有新版本发布。93,129 个 Star 的数据说明社区关注度不低,已有不少公司在生产环境中试用。

项目文档在 bun.com 上,内容比较完整,涵盖了安装、运行时、包管理、API 参考等各个方面。

ar 的数据说明社区关注度不低,已有不少公司在生产环境中试用。

项目文档在 bun.com 上,内容比较完整,涵盖了安装、运行时、包管理、API 参考等各个方面。