CLI
bash
Usage: tables [-i INPUT_DIR] [-o OUTPUT_DIR] [-f FORMAT]
Options:
--input, -i input 目录或文件(.xlsx) [default: "."]
--output, -o 输出目录 [default: "."]
--format, -f 导出格式 [choices: json|js|ts|ts-interface|jsonx|go|csharp]
--silent, -s 静默模式 [boolean]
--verbose, -v 详细日志 [boolean]
--fail-fast 尝试在首次致命错误即停止(尽力) [boolean]
--strict 将警告视为错误(TID 冲突报错) [boolean]
--context, -c context 目录或 context.*.json 文件
--inspect 单文件机器可读诊断输出 [boolean]
--validate 单文件机器可读校验输出 [boolean]
--json inspect/validate 抑制附带日志 [boolean]
-h, --help 帮助
--version 版本示例:
- 整目录导出为 TS:
bash
tables -i ./example -o ./out-ts -f ts
-f ts会生成<Table>.ts(类型 + Repo 定义)与<Table>Solution.ts(携带数据与默认实例)。
- 单文件导出为 JSON(静默):
bash
tables -i ./example/example.xlsx -o ./out -f json --silent- 使用显式上下文目录:
bash
tables -i ./example/items.csv -o ./out -f ts-interface --context ./example- 输出单文件诊断 JSON:
bash
tables -i ./example/items.csv --inspect- 输出单文件校验 JSON:
bash
tables -i ./example/items.csv --validate- 严格模式(TID 冲突非 0 退出):
bash
tables -i ./example -o ./out -f json --strict上下文加载:
- 目录输入默认加载该目录下的
context.*.json。 - 文件输入默认不猜测上下文;需要枚举、索引或 meta 时使用
--context。 --context可指向目录,也可指向单个context.<blob>.json文件。
--inspect 只支持单文件输入,并向 stdout 输出 JSON,适合脚本或 AI agent 读取。诊断包括实际 sheet 名、mark/desc 信息、schema model、convert 计数、索引与 alias 计数以及转换错误信息。
Validate JSON
--validate 复用单文件解析与转换诊断,输出更稳定的校验报告,方便 AI agent 和 CI 直接消费:
bash
tables -i ./example/items.csv --validate- 仅支持单文件输入。
- stdout 输出 JSON;失败时退出码为非
0。 errors[].code当前包括schema_error、convert_error、tid_collision、inspect_error、invalid_input、unsupported_file、preflight_error。errors[].location会尽量补充sheetName、row、column、fieldPath;errors[].details会尽量补充tableName、tid、sourceAlias、rawValue、suggestedType等可定位信息。diagnostics保留--inspect的完整诊断结果,便于定位 sheet、mark/desc、schema 和 convert 信息。- 可与
--context ./dir或--context ./context.enums.json组合使用。 --inspect/--validate始终向 stdout 输出 JSON;使用--json时,附带日志不会写入 stderr。
JSON 形状:
json
{
"success": false,
"fileName": "items",
"sheetName": "Sheet1",
"diagnostics": {
"fileName": "items",
"sheetName": "Sheet1",
"convert": {
"present": false,
"tidCount": 0,
"resultCount": 0
}
},
"errors": [
{
"severity": "error",
"code": "convert_error",
"message": "required value is empty",
"location": { "sheetName": "Sheet1", "row": 4, "column": "A" },
"diagnosticPath": "convert.error",
"details": { "tableName": "items" }
}
],
"warnings": []
}建议测试用例:
- 有效 CSV:
stdout可被JSON.parse解析,success === true,退出码为0。 - 必填字段缺失或 schema/convert 失败:
success === false,errors[0]带severity/code/message,退出码非0。 - TID 冲突:
errors[].code包含tid_collision,并带diagnosticPath、details.tid和可用策略提示。 --verbose --context --json:stdout 仍是纯 JSON,附带日志不污染输出通道。
命名规则:输出文件名自动按输入名驼峰化(如 example.xlsx -> Example.json)。
推荐输出目录:
bash
tables -i ./example -o ./example/out -f json --silent