文章目录
- 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 install、bun add、bun 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 参考等各个方面。