241 lines
4.7 KiB
Markdown
241 lines
4.7 KiB
Markdown
# 管理后台 - Bun 使用指南
|
||
|
||
## 🥖 Bun 简介
|
||
|
||
Bun 是一个极速的 JavaScript 运行时和包管理器,专为现代前端开发而设计。
|
||
|
||
### 主要优势
|
||
- ⚡ **极速安装**: 比 npm 快 2-3 倍
|
||
- 🔧 **内置工具**: 打包器、测试运行器、转译器
|
||
- 🎯 **高兼容性**: 100% 兼容 Node.js API
|
||
- 💾 **内存效率**: 更低的内存占用
|
||
- 📦 **原生支持**: TypeScript、JSX 无需配置
|
||
|
||
## 🚀 快速开始
|
||
|
||
### 安装 Bun
|
||
```bash
|
||
# macOS/Linux
|
||
curl -fsSL https://bun.sh/install | bash
|
||
|
||
# Windows (使用 WSL)
|
||
curl -fsSL https://bun.sh/install | bash
|
||
|
||
# 验证安装
|
||
bun --version
|
||
```
|
||
|
||
### 项目初始化
|
||
```bash
|
||
# 进入项目目录
|
||
cd admin/
|
||
|
||
# 安装依赖
|
||
bun install
|
||
|
||
# 启动开发服务器
|
||
bun run dev
|
||
```
|
||
|
||
## 📋 常用命令
|
||
|
||
### 包管理
|
||
```bash
|
||
# 安装所有依赖
|
||
bun install
|
||
|
||
# 安装特定包
|
||
bun add react
|
||
bun add -d typescript # 开发依赖
|
||
|
||
# 移除包
|
||
bun remove package-name
|
||
|
||
# 更新依赖
|
||
bun update
|
||
|
||
# 清理缓存
|
||
bun pm cache rm
|
||
```
|
||
|
||
### 脚本运行
|
||
```bash
|
||
# 开发服务器
|
||
bun run dev
|
||
bun dev # 简写
|
||
|
||
# 构建生产版本
|
||
bun run build
|
||
|
||
# 类型检查
|
||
bun run type-check
|
||
|
||
# 代码检查
|
||
bun run lint
|
||
|
||
# 测试
|
||
bun run test
|
||
bun test # 简写
|
||
```
|
||
|
||
### 高级功能
|
||
```bash
|
||
# 直接运行 TypeScript 文件
|
||
bun run src/index.ts
|
||
|
||
# 安装并运行包 (类似 npx)
|
||
bunx create-react-app my-app
|
||
bunx vite
|
||
|
||
# 查看依赖树
|
||
bun pm ls
|
||
|
||
# 安全审计
|
||
bun audit
|
||
```
|
||
|
||
## 🔧 配置文件
|
||
|
||
### package.json 配置
|
||
```json
|
||
{
|
||
"name": "photography-admin",
|
||
"packageManager": "bun@latest",
|
||
"scripts": {
|
||
"dev": "vite",
|
||
"build": "tsc && vite build",
|
||
"preview": "vite preview"
|
||
}
|
||
}
|
||
```
|
||
|
||
### bun.lockb 文件
|
||
- Bun 使用二进制锁文件 `bun.lockb` 而不是 `package-lock.json`
|
||
- 体积更小,解析更快
|
||
- 自动生成,不需要手动编辑
|
||
- 确保团队间依赖版本一致
|
||
|
||
### .bunfig.toml 配置 (可选)
|
||
```toml
|
||
# 项目根目录下的 .bunfig.toml
|
||
[install]
|
||
# 使用特定的注册表
|
||
registry = "https://registry.npmjs.org/"
|
||
|
||
# 配置缓存
|
||
cache = true
|
||
|
||
# 安装时显示进度
|
||
progress = true
|
||
|
||
[dev]
|
||
# 开发服务器配置
|
||
port = 3000
|
||
```
|
||
|
||
## 📊 性能对比
|
||
|
||
### 依赖安装速度
|
||
```bash
|
||
# 测试项目: photography-admin (40+ 依赖)
|
||
npm install ~45 秒
|
||
yarn install ~35 秒
|
||
pnpm install ~25 秒
|
||
bun install ~8 秒 # 🏆 最快!
|
||
```
|
||
|
||
### 构建速度
|
||
```bash
|
||
# React + TypeScript + Vite 项目
|
||
npm run build ~25 秒
|
||
yarn build ~23 秒
|
||
bun run build ~15 秒 # 🏆 最快!
|
||
```
|
||
|
||
### 内存占用
|
||
```bash
|
||
# 开发服务器运行时内存使用
|
||
Node.js + npm ~180 MB
|
||
Node.js + yarn ~165 MB
|
||
Bun ~120 MB # 🏆 最省内存!
|
||
```
|
||
|
||
## 🔄 迁移指南
|
||
|
||
### 从 npm 迁移
|
||
```bash
|
||
# 1. 删除旧的锁文件和 node_modules
|
||
rm package-lock.json
|
||
rm -rf node_modules/
|
||
|
||
# 2. 使用 bun 安装依赖
|
||
bun install
|
||
|
||
# 3. 更新 package.json
|
||
echo '"packageManager": "bun@latest",' >> package.json
|
||
```
|
||
|
||
### 从 yarn 迁移
|
||
```bash
|
||
# 1. 删除 yarn 相关文件
|
||
rm yarn.lock
|
||
rm -rf node_modules/
|
||
|
||
# 2. 安装依赖
|
||
bun install
|
||
|
||
# 3. 更新脚本命令
|
||
# 将 yarn dev 改为 bun run dev 或 bun dev
|
||
```
|
||
|
||
## 🛠️ Makefile 集成
|
||
|
||
项目已配置 Makefile 来简化 Bun 命令:
|
||
|
||
```bash
|
||
# 快速启动
|
||
make quick # bun install + bun run dev
|
||
|
||
# 开发相关
|
||
make dev # bun run dev
|
||
make build # bun run build
|
||
make check # lint + type-check + test
|
||
|
||
# 项目管理
|
||
make clean # 清理构建文件
|
||
make status # 查看项目状态
|
||
make audit # 安全审计
|
||
```
|
||
|
||
## 🐛 常见问题
|
||
|
||
### Q: bun.lockb 文件很大?
|
||
A: 这是正常的,bun.lockb 是二进制文件,包含了完整的依赖图信息,虽然看起来大但解析极快。
|
||
|
||
### Q: 某些包在 Bun 下不工作?
|
||
A: Bun 与 Node.js 高度兼容,但少数包可能有兼容性问题。可以使用 `bun --bun` 强制使用 Bun 运行时。
|
||
|
||
### Q: 如何在 CI/CD 中使用 Bun?
|
||
A: 项目已配置使用 `oven-sh/setup-bun@v1` action,自动设置 Bun 环境。
|
||
|
||
### Q: 团队成员必须都使用 Bun 吗?
|
||
A: 不必须。Bun 可以读取 `package-lock.json`,npm/yarn 也能处理 Bun 项目,但推荐统一使用 Bun 以获得最佳性能。
|
||
|
||
## 📚 参考资料
|
||
|
||
- [Bun 官方文档](https://bun.sh/docs)
|
||
- [Bun GitHub 仓库](https://github.com/oven-sh/bun)
|
||
- [Bun vs Node.js 性能对比](https://bun.sh/blog/bun-v1.0)
|
||
- [Bun 包管理器指南](https://bun.sh/docs/cli/install)
|
||
|
||
## 🎯 最佳实践
|
||
|
||
1. **依赖管理**: 定期运行 `bun outdated` 检查过时依赖
|
||
2. **锁文件**: 始终提交 `bun.lockb` 到版本控制
|
||
3. **脚本优化**: 利用 Bun 的速度优势,多运行类型检查和测试
|
||
4. **CI/CD**: 在 CI 中使用 `--frozen-lockfile` 确保一致性
|
||
5. **团队协作**: 在 README 中说明项目使用 Bun
|
||
|
||
---
|
||
|
||
🥖 **享受 Bun 带来的极速开发体验吧!** |