帮你省时间,看看 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 你想尝试一下吗?

相关推荐
Vitalia4 小时前
从零开始学Rust:枚举(enum)与模式匹配核心机制
开发语言·后端·rust
飞飞翼4 小时前
python-flask
后端·python·flask
草捏子5 小时前
最终一致性避坑指南:小白也能看懂的分布式系统生存法则
后端
斯~内克6 小时前
Electron 菜单系统深度解析:从基础到高级实践
前端·javascript·electron
一个public的class6 小时前
什么是 Java 泛型
java·开发语言·后端
数据知道6 小时前
【YAML】一文掌握 YAML 的详细用法(YAML 备忘速查)
前端·yaml
dr李四维6 小时前
vue生命周期、钩子以及跨域问题简介
前端·javascript·vue.js·websocket·跨域问题·vue生命周期·钩子函数
旭久6 小时前
react+antd中做一个外部按钮新增 表格内部本地新增一条数据并且支持编辑删除(无难度上手)
前端·javascript·react.js
windyrain6 小时前
ant design pro 模版简化工具
前端·react.js·ant design
浪遏7 小时前
我的远程实习(六) | 一个demo讲清Auth.js国外平台登录鉴权👈|nextjs
前端·面试·next.js