Bun:一套工具搞定 JavaScript 开发
Bun:一套工具搞定 JavaScript 开发
oven-sh 推出的 Bun,目前已经有 93k+ 的 Star:


Bun 是一个面向 JavaScript 和 TypeScript 的全能工具包,以单个 bun 可执行文件分发。核心是 Bun 运行时,可作为 Node.js 的即插即用替代品。它用 Rust 编写,底层使用 JavaScriptCore 引擎,启动速度和内存占用都比 Node.js 有明显优势。
bun run index.tsx # 直接运行 TS 和 JSX
bun 命令行工具同时实现了测试运行器、脚本运行器和兼容 Node.js 的包管理器。开发时不再需要 node_modules 里的上千个工具,一个 bun 就够了。
bun test # 运行测试
bun run start # 运行 package.json 中的 start 脚本
bun install <pkg> # 安装包
bunx cowsay 'Hello, world!' # 直接执行 npm 包
安装方式
Bun 支持 Linux(x64 和 arm64)、macOS(x64 和 Apple Silicon)以及 Windows(x64 和 arm64)。
# 安装脚本(推荐)
curl -fsSL https://bun.com/install | bash
# Windows
powershell -c "irm bun.sh/install.ps1 | iex"
# npm
npm install -g bun
# Homebrew
brew tap oven-sh/bun
brew install bun
# Docker
docker pull oven/bun
升级到最新版本直接运行 bun upgrade。
功能一:包管理器
Bun 内置了完整的包管理器,bun install 的速度远超 npm 和 yarn。支持 workspaces、monorepo、私有仓库、各种 registry(包括 Azure Artifacts 和 JFrog Artifactory),还能直接安装 Git 依赖和 tarball 依赖。
项目从 npm 迁移到 bun 基本不需要改代码。
功能二:打包工具
Bun.build() 提供了从源码到生产包的完整构建能力。支持 CSS、HTML、静态站点、字节码缓存、代码压缩,还能生成单文件可执行文件。
内置的 HMR(热模块替换)支持,开发体验很流畅。
功能三:测试运行器
Bun 的测试运行器兼容 Jest 的 API,支持快照测试、mock、spy、覆盖率报告、DOM 测试(配合 happy-dom),还可以在 watch 模式下自动重跑。
迁移成本低:把 jest 的调用改成 bun test 就行。
功能四:内置 API
Bun 提供了丰富的内置 API,不用额外装第三方依赖:
- HTTP 服务器:
Bun.serve()几行代码起一个 HTTP 服务,支持 TLS、WebSocket、SSE - SQLite:
bun:sqlite内置数据库引擎 - PostgreSQL:
Bun.sql()直接连接 PG 数据库 - Redis:
Bun.redis()操作 Redis - S3 客户端:
Bun.s3()对象存储操作 - 文件操作:
Bun.file()、Bun.write()读写文件 - 加密哈希:
Bun.hash()、Bun.CryptoHasher - FFI:
bun:ffi调用 C 语言库 - Cron 定时任务:
Bun.cron()定时执行代码 - WebSocket:服务端和客户端都支持
- YAML/TOML/JSON5/Markdown:内置解析器
整体来看,Bun 把所有日常开发需要的工具打包到了一个二进制文件里。不用再装 Node.js、npx、ts-node、jest、esbuild 等一系列工具,一个 bun 覆盖全部场景。
生态系统
Bun 生态在快速扩张,支持主流的框架和工具:
- 前端框架:Next.js、Nuxt、SvelteKit、Astro、Remix、SolidStart、Qwik、TanStack Start
- ORM 和数据库:Prisma、Drizzle、Gel、Mongoose
- HTTP 框架:Hono、Elysia、Express
- 其他:Sentry、PM2、Discord.js
部署方面支持 Vercel、Railway、Render、AWS Lambda、Google Cloud Run、DigitalOcean 等平台,也可以直接用 Docker 容器化部署。
Bun 的目标不是替代 JavaScript 生态,而是把碎片化的工具链整合起来。对于新项目,直接上手 Bun 可以显著减少配置成本;对于现有 Node.js 项目,逐步替换包管理器和运行时的迁移成本也很低。
替代 JavaScript 生态,而是把碎片化的工具链整合起来。对于新项目,直接上手 Bun 可以显著减少配置成本;对于现有 Node.js 项目,逐步替换包管理器和运行时的迁移成本也很低。
更多推荐
所有评论(0)