Bun:一套工具搞定 JavaScript 开发

oven-sh 推出的 Bun,目前已经有 93k+ 的 Star:

正文顶部截图

README区域截图

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
  • SQLitebun:sqlite 内置数据库引擎
  • PostgreSQLBun.sql() 直接连接 PG 数据库
  • RedisBun.redis() 操作 Redis
  • S3 客户端Bun.s3() 对象存储操作
  • 文件操作Bun.file()Bun.write() 读写文件
  • 加密哈希Bun.hash()Bun.CryptoHasher
  • FFIbun: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 项目,逐步替换包管理器和运行时的迁移成本也很低。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐