帮你省时间,看看 bun v1.0 怎么用!

本文基于 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 你想尝试一下吗?

相关推荐
Emily1568535987019 分钟前
Emerson 1C31129G03 Analog Input Module
java·开发语言·前端·plc·emerson·1c31129g03·input module
To_OC5 小时前
面试被问了三回三栏布局,这次我终于把 BFC 那层窗户纸捅破了
前端·css·面试
To_OC6 小时前
啃完 TS 工具类型我发现:Pick 和 Omit 原来就是一层窗户纸
前端·面试·typescript
AI绘画哇哒哒6 小时前
【建议收藏!】35岁后端血泪忠告,这3类人别硬转Agent(过来人亲述)
java·人工智能·后端·ai·程序员·大模型·agent
唐青枫7 小时前
一个值多种形态:Zig union、Tagged Union 与内存布局实战
后端
风月说与山鬼7 小时前
三、大括号语法
前端·react.js
卷无止境7 小时前
Windows 上丝滑开发 Python,并稳定构建 Docker 镜像
后端·python·docker
Nturmoils7 小时前
备份完不算完,先还原到临时库验一遍
后端
kyriewen7 小时前
我把最常踩的8个CORS跨域报错整理了一遍——第8个去年还不存在
前端·javascript