packages/resume-templates 里。一个模板是一个 MagicTemplateDSL 值 —— 描述 design token、布局、按 section 渲染规则的声明式数据。本包里的渲染器把”一个 DSL 值 + 一份 Resume”渲染成 JSX。
也就是说,模板是 数据,不是组件。Web 应用和 PDF 导出共用一套渲染器。
一个模板长什么样
sections 的顺序遍历,查找 Resume 中对应的子值,然后渲染。没在 sections 里出现的 section 在这套模板下就不会渲染。
注册表
所有模板在packages/resume-templates/src/registry.ts 里注册:
packages/resume-schema 中的 templateIds 完全一致。Schema 的 Zod enum 校验 selectedTemplate 字段 —— 漂移会让保存过的简历校验失败。
加一套新模板
1
在 Schema 里加 ID
在
packages/resume-schema/src/ 里,把新 ID 追加到 templateIds 元组。2
写 DSL 配置
在
packages/resume-templates/src/config/ 下加一个新文件,导出 MagicTemplateDSL。从布局形状最接近的现有模板开始改。3
注册它
4
加缩略图
把一张 JPEG 放在:模板库按 ID 取图;文件名必须与模板 ID 完全相同。
5
重新构建
TemplateCustomizer
@magic-resume/resume-templates/TemplateCustomizer 是一个子导出 —— Web 应用嵌入它,让用户在不 fork DSL 的前提下调整模板的 design token。如果你新增了 token,也要在这里加对应的控件。
