121 lines
2.0 KiB
Markdown
121 lines
2.0 KiB
Markdown
# Cook CLI
|
||
|
||
Cook CLI 是一个命令行工具,用于管理菜谱数据。
|
||
|
||
## 安装
|
||
|
||
项目依赖已在 workspace 中配置,无需单独安装。
|
||
|
||
## 数据源
|
||
|
||
菜谱数据保存在本地 `packages/data/recipe.csv`,直接用编辑器或 Excel 维护,提交 PR 即可。
|
||
|
||
## 命令
|
||
|
||
### convert
|
||
|
||
将本地 CSV 数据转换为 JSON 格式。
|
||
|
||
```bash
|
||
pnpm convert
|
||
```
|
||
|
||
**功能:**
|
||
|
||
- 读取 `packages/data/recipe.csv`
|
||
- 转换为 JSON 格式
|
||
- 生成 `packages/data/recipe.json`
|
||
|
||
**使用场景:**
|
||
|
||
- 手动编辑 CSV 后需要重新生成 JSON
|
||
- 确保 CSV 和 JSON 数据同步
|
||
|
||
## 工作流程
|
||
|
||
### 更新菜谱数据
|
||
|
||
```bash
|
||
# 1. 编辑 packages/data/recipe.csv
|
||
|
||
# 2. 转换为 JSON
|
||
pnpm convert
|
||
|
||
# 3. 启动开发服务器查看效果
|
||
pnpm dev
|
||
```
|
||
|
||
## 数据格式
|
||
|
||
### CSV 格式
|
||
|
||
```csv
|
||
name,stuff,bv,difficulty,tags,methods,tools,id
|
||
宫保鸡丁,鸡肉、花生米,BV1234567890,简单,川菜、家常菜,炒、煎,一口大锅,0
|
||
```
|
||
|
||
### JSON 格式
|
||
|
||
```json
|
||
[
|
||
{
|
||
"name": "宫保鸡丁",
|
||
"stuff": ["鸡肉", "花生米"],
|
||
"bv": "BV1234567890",
|
||
"difficulty": "简单",
|
||
"tags": ["川菜", "家常菜"],
|
||
"methods": ["炒", "煎"],
|
||
"tools": ["一口大锅"],
|
||
"id": 0
|
||
}
|
||
]
|
||
```
|
||
|
||
## 故障排查
|
||
|
||
### CSV 解析错误
|
||
|
||
**错误信息:**
|
||
|
||
```
|
||
Error: Failed to parse CSV
|
||
```
|
||
|
||
**解决方案:**
|
||
|
||
1. 检查 CSV 文件格式是否正确
|
||
2. 确认字段分隔符为逗号
|
||
3. 检查是否有未闭合的引号
|
||
4. 验证编码是否为 UTF-8
|
||
|
||
## 相关文档
|
||
|
||
- [开发指南](/dev/app)
|
||
- [使用说明](/guide/getting-started)
|
||
|
||
## 测试
|
||
|
||
### 运行测试
|
||
|
||
```bash
|
||
# 运行所有测试
|
||
pnpm test
|
||
|
||
# 运行 CLI 相关测试
|
||
pnpm test packages/cook
|
||
|
||
# 运行特定测试文件
|
||
pnpm test packages/cook/src/utils/csv.test.ts
|
||
```
|
||
|
||
### 测试覆盖
|
||
|
||
CLI 工具包含以下测试:
|
||
|
||
- **CSV 解析测试** (`csv.test.ts`)
|
||
- ✅ BV 号清洗和 URL 处理
|
||
- ✅ CSV 格式解析
|
||
- ✅ 空值和边界情况处理
|
||
- ✅ 数组字段过滤空值
|
||
- ✅ CSV 往返一致性(parse → stringify → parse)
|