序列化器与上下文
内置序列化器:
jsonSerializer:输出 JSONjsSerializer:输出可require()的 JS(module.exports = {...})tsSerializer:输出 TS 接口 + 数据常量 +import * as TableContext from "./context";tsInterfaceSerializer:仅输出 TS 接口jsonxSerializer(实验性):在 JSON 外层增加协议头与源信息(详见 协议说明)
排序稳定性:
- 所有序列化器都会按 key 对
convert.result进行排序,保证产出稳定(便于 Git diff)
上下文(Context):
- 将
example/context.*.json等聚合为上下文(通过loadContext(dir)),供序列化器使用 ts*相关序列化器可通过serializeContext(dirOut, serializers, context)生成context.ts(包含枚举)- 在
context.meta.exports.enum = ['enums']中声明要输出的枚举集合名;枚举定义形如:
json
{
"Colors": { "Red": 1, "Blue": 2 }
}示例:
js
const ctx = loadContext('./example')
serializeContext('./out', [tsSerializer, tsInterfaceSerializer], ctx)
serialize('./example/hero_advance.xlsx', './out', {
'HeroAdvance.ts': tsSerializer,
'HeroAdvance.interface.ts': tsInterfaceSerializer
}, ctx)协议版 JSON(jsonx):
js
const { serialize, jsonxSerializer } = require('@khgame/tables')
serialize('example/example.xlsx', 'example/out', { 'Example.json': jsonxSerializer })