本文基于 Window Ubuntu WSL 环境测试,本文只选取重点,细节需查看文档
一、bun v1.0 做了什么?
all in JavaScript/TypeScript app
。看起真的很了不起!
- 作为JS/TS运行时
- 作为包管理工具和包运行器
- 作为构建工具
- 作为测试运行器
- 对外提供 API
资源
二、安装 bun v1.0
bun 目前不支持 window 环境,但是可以在 wsl 中使用。
2.1) 各种安装方法
- curl
sh
curl -fsSL https://bun.sh/install | bash # 检查:which bun
- 使用 npm 安装
sh
npm install -g bun # 检查:which bun
- 其他平台的安装方法
sh
brew tap oven-sh/bun # for macOS and Linux
brew install bun # brew
docker pull oven/bun # docker
2.2) bun 提供的命令
命令 | 描述 |
---|---|
init | 初始化一个 bun 项目 |
run | 运行一个文件或者脚本 |
test | 运行测试 |
x | bun x 的别名,类似于 npx |
repl | 进入交互式环境 |
create | 使用模板创建项目 |
install | 安装依赖 |
add | 添加依赖 |
remove | 移除依赖 |
update | 更新依赖 |
link | 全局链接一个 npm 包 |
unlink | 移除全局链接的 npm 包 |
pm | 更多的包管理命令 |
build | 打包 TypeScript/JavaScript 文件到单个文件 |
update | 获取最新的 bun 版本 |
三、作为 JS/TS 运行时
ts
bun index.js // 运行 js 文件
bun run index.ts // 运行 ts 文件
// 其他相关的 tsx/jsx/...
如果直接运行 index.tsx
没有任何依赖会报错:
tsx
const Ad = <div>ad</div>
console.log(Ad)
// bun index.tsx
// 错误:Cannot find module "react/jsx-dev-runtime" from "/xxx/index.tsx"
四、作为包管理工具和包运行器
4.1)初始化一个项目
sh
bun init # 与 npm init -y 类似
4.2)使用脚手架
sh
# 与 npx 类似, 以下可能常用的初始化项目的脚手架
bun create react-app
bun create remix
bun create next-app
bun create nuxt-app
五、作为构建工具
- 初始化一个简单的项目
sh
cd your_dir
bun init # 默认
bun add react react-dom # 添加依赖包
touch index.tsx
- 添加 TSX 文件内容
tsx
import React from 'react'
const App = () => {
return <div>This is App</div>
}
- 打包 bun build
sh
bun build ./index.tsx --outfile=bundle.js
提示:bundle.js 中打包了 react 相关的包。
六、作为测试运行器
测试与 Jest 非常相似, 以下是官方示例:
js
import { expect, test } from "bun:test";
test("2 + 2", () => {
expect(2 + 2).toBe(4);
});
运行时测试:
sh
bun test
速度很快,输出结果:
sh
bun test v1.0.0 (822a00c4)
t.test.ts:
✓ 2 + 2 [1.03ms]
1 pass
0 fail
1 expect() calls
Ran 1 tests across 1 files. [92.00ms]
七、对外提供 API
项目 | 描述 |
---|---|
HTTP 服务 | 处理 HTTP 请求和响应 |
WebSocket 套接字 | 支持 WebSocket 连接 |
Workers 工具 | 在后台运行多线程任务 |
Binary data | 处理二进制数据 |
Streams | 流处理 |
File I/O | 文件输入/输出操作 |
import.meta | 访问模块元信息 |
SQLite | 使用 SQLite 数据库 |
FileSystemRouter | 文件系统路由器 |
TCP sockets | TCP 套接字通信 |
Globals | 全局变量和对象 |
Child processes | 创建子进程 |
Transpiler | 转译器 |
Hashing | 哈希函数和算法 |
Console | 控制台输出 |
FFI | 外部函数接口 |
HTMLRewriter | HTML 重写和转换 |
Testing | 测试工具和框架 |
Utils | 实用工具函数 |
Node-API | Node.js API 访问 |
八、展望
- windows 支持
小结
本文主要讲解了 bun v1.0 中所做的事情,包含极速的运行时、一体化的包管理工具、内置测试运行器、构建应用(打包)和对象提供各种类型的 API(兼容 Node API(非完全)),如此功能能完整的 bun 你想尝试一下吗?