YAMLResume

Zod Schema

YAMLResume 采用 zod 在运行时验证简历数据。

本文档概述了 YAMLResume 中使用的所有 zod 模式。如果您对实现细节感兴趣,可以在这里找到源代码。

简历模式

定义整体简历结构验证,包括内容和布局验证。

属性类型必需
contentContentSchema✅
layouts?LayoutsSchema⬜
locale?LocaleSchema⬜

ContentSchema

定义整个简历内容的验证结构。

属性类型必需
basicsBasicsItemSchema✅
educationEducationItemSchema[]✅
awards?AwardItemSchema[]⬜
certificates?CertificateItemSchema[]⬜
interests?InterestItemSchema[]⬜
languages?LanguageItemSchema[]⬜
location?LocationItemSchema⬜
projects?ProjectItemSchema[]⬜
profiles?ProfileItemSchema[]⬜
publications?PublicationItemSchema[]⬜
references?ReferenceItemSchema[]⬜
skills?SkillItemSchema[]⬜
volunteer?VolunteerItemSchema[]⬜
work?WorkItemSchema[]⬜

AwardItemSchema

验证获得的单个奖项、荣誉或认可。

属性类型必需验证规则
awarderstring✅2-128 个字符
titlestring✅2-128 个字符
date?string⬜参见日期模式
summary?string⬜参见摘要模式

BasicsItemSchema

验证核心个人和联系信息。

属性类型必需验证规则
namestring✅2-128 个字符
email?string⬜参见电子邮件模式
headline?string⬜2-128 个字符
phone?string⬜参见电话模式
summary?string⬜参见摘要模式
url?string⬜参见URL 模式

CertificateItemSchema

验证单个认证、证书或专业资格。

属性类型必需验证规则
issuerstring✅2-128 个字符
namestring✅2-128 个字符
date?string⬜参见日期模式
url?string⬜参见URL 模式

EducationItemSchema

验证单个教育经历或学位课程。

属性类型必需验证规则
areastring✅2-64 个字符
degreeDegree✅必须来自预定义的学位选项
institutionstring✅2-128 个字符
startDatestring✅参见日期模式
courses?string[]⬜每个项目 2-128 个字符
endDate?string⬜参见日期模式
summary?string⬜参见摘要模式
score?string⬜2-32 个字符
url?string⬜参见URL 模式

InterestItemSchema

验证单个兴趣、爱好或个人活动。

属性类型必需验证规则
namestring✅2-128 个字符
keywords?string[]⬜参见关键词模式

LanguageItemSchema

验证单个语言能力项目。

属性类型必需验证规则
fluencyFluency✅必须来自预定义的熟练程度选项
languageLanguage✅必须来自预定义的语言选项
keywords?string[]⬜每个项目 1-32 个字符

LocationItemSchema

验证位置和地址信息。

属性类型必需验证规则
citystring✅2-128 个字符
address?string⬜2-128 个字符
country?Country⬜必须来自预定义的国家选项
postalCode?string⬜2-128 个字符
region?string⬜2-128 个字符

ProfileItemSchema

验证单个在线个人资料或社交媒体存在。

属性类型必需验证规则
networkNetwork✅必须来自预定义的网络选项
usernamestring✅2-128 个字符
url?string⬜有效 URL,最多 256 个字符

ProjectItemSchema

验证单个项目、作品集作品或技术工作。

属性类型必需验证规则
namestring✅2-128 个字符
startDatestring✅参见日期模式
summarystring✅参见摘要模式
description?string⬜4-128 个字符
endDate?string⬜参见日期模式
keywords?string[]⬜每个项目 1-32 个字符
url?string⬜有效 URL,最多 256 个字符

PublicationItemSchema

验证单个出版物、研究工作或学术论文。

属性类型必需验证规则
namestring✅2-128 个字符
publisherstring✅2-128 个字符
releaseDate?string⬜参见日期模式
summary?string⬜参见摘要模式
url?string⬜有效 URL,最多 256 个字符

ReferenceItemSchema

验证单个专业推荐人或推荐。

属性类型必需验证规则
namestring✅2-128 个字符
summarystring✅参见摘要模式
email?string⬜参见电子邮件模式
phone?string⬜有效电话格式
relationship?string⬜2-128 个字符

SkillItemSchema

验证单个技能、能力或技术能力。

属性类型必需验证规则
levelLevel✅必须来自预定义的级别选项
namestring✅2-128 个字符
keywords?string[]⬜每个项目 1-32 个字符

VolunteerItemSchema

验证单个志愿者经历或社区服务。

属性类型必需验证规则
organizationstring✅2-128 个字符
positionstring✅2-128 个字符
startDatestring✅参见日期模式
summarystring✅参见摘要模式
endDate?string⬜参见日期模式
url?string⬜有效 URL,最多 256 个字符

WorkItemSchema

验证单个工作经历或就业职位。

属性类型必需验证规则
namestring✅2-128 个字符
positionstring✅2-128 个字符
startDatestring✅参见日期模式
summarystring✅参见摘要模式
endDate?string⬜参见日期模式
keywords?string[]⬜每个项目 1-32 个字符
url?string⬜有效 URL,最多 256 个字符

LocaleSchema

验证国际化和本地化的区域设置。

属性类型必需验证规则
language?LocaleLanguage⬜必须来自预定义的区域语言选项

LayoutsSchema

定义整体布局验证配置。

属性类型必需验证规则
layouts[]DocxLayoutSchema | HtmlLayoutSchema | LatexLayoutSchema | MarkdownLayoutSchema⬜布局配置数组。

通用布局模式

MarginsSchema

验证文档布局的页边距设置。

属性类型必需验证规则
top?string⬜参见页边距大小模式
bottom?string⬜参见页边距大小模式
left?string⬜参见页边距大小模式
right?string⬜参见页边距大小模式
SectionsSchema

验证分节自定义设置。

属性类型必需验证规则
aliases?Record<SectionID, string>⬜键必须是有效的分节 ID,值必须是字符串(2-128 个字符)
order?OrderableSectionID[]⬜有效可排序分节 ID 的数组
ThemeSchema

定义简历的视觉主题设置,例如强调色。markdown 引擎会忽略主题选项。

属性类型必需验证规则
colors?{ accent?: AccentColor | HexColor }⬜参见强调色

colors.accent 选项设置用于章节标题、分隔线、链接和标签等突出元素的强调色。它接受命名的 AccentColor 预设或任意的 #RRGGBB 十六进制颜色字符串。

HtmlLayoutSchema

验证 HTML 布局配置。

属性类型必需
engine'html'✅
advanced?HtmlAdvancedSchema⬜
sections?SectionsSchema⬜
template?HtmlTemplateSchema⬜
theme?ThemeSchema⬜
typography?HtmlTypographySchema⬜
HtmlAdvancedSchema

验证 HTML 的高级布局配置选项。

属性类型必需验证规则
showAnchors?boolean⬜true/false
showIcons?boolean⬜true/false
title?string⬜-
footer?string⬜-
description?string⬜-
keywords?string⬜-
HtmlTemplateSchema

验证 HTML 模板配置。

属性类型必需验证规则
templateHtmlTemplate⬜必须来自预定义的模板选项
HtmlTypographySchema

验证 HTML 排版设置。

属性类型必需验证规则
fontFamily?string⬜逗号分隔的字体家族列表。
fontSize?HtmlFontSize⬜必须来自预定义的字体大小选项
lineSpacing?LineSpacing⬜必须来自预定义的行间距选项

LatexLayoutSchema

验证 LaTeX 布局配置。

属性类型必需验证规则
advanced?LatexAdvancedSchema⬜参见高级模式
engine'latex'✅必须是 "latex"
page?LatexPageSchema⬜参见页面模式
sections?SectionsSchema⬜参见分节模式
template?LatexTemplate⬜必须来自预定义的模板选项
theme?ThemeSchema⬜参见主题模式
typography?LatexTypographySchema⬜参见排版模式
LatexAdvancedSchema

验证 LaTeX 的高级配置选项。

属性类型必需验证规则
fontspec?{ numbers?: LatexFontspecNumbers }⬜必须来自预定义的fontspec 数字选项
showIcons?boolean⬜true/false
showUrls?boolean⬜true/false
LatexPageSchema

验证文档演示的页面级设置。

属性类型必需验证规则
margins?MarginsSchema⬜参见页边距模式
paperSize?PaperSize⬜必须来自预定义的纸张大小选项
showPageNumbers?boolean⬜true/false
LatexTypographySchema

验证文档格式的排版设置。

属性类型必需验证规则
fontSize?LatexFontSize⬜必须来自预定义的字体大小选项
fontFamily?string⬜逗号分隔的字体家族列表。
lineSpacing?LineSpacing⬜必须来自预定义的行间距选项
links?{ underline?: boolean }⬜true/false

MarkdownLayoutSchema

验证 Markdown 布局配置。

属性类型必需验证规则
engine'markdown'✅必须是 "markdown"
sections?SectionsSchema⬜参见分节模式

DocxLayoutSchema

验证 DOCX 布局配置。

属性类型必需验证规则
engine'docx'✅必须是 "docx"
advanced?DocxAdvancedSchema⬜参见高级模式
page?DocxPageSchema⬜参见页面模式
sections?SectionsSchema⬜参见分节模式
template?DocxTemplate⬜必须来自预定义的模板选项
theme?ThemeSchema⬜参见主题模式
typography?DocxTypographySchema⬜参见排版模式
DocxAdvancedSchema

验证 DOCX 的高级配置选项。

属性类型必需验证规则
showIcons?boolean⬜true/false
showUrls?boolean⬜true/false
DocxPageSchema

验证 DOCX 的页面级设置。

属性类型必需验证规则
margins?MarginsSchema⬜参见页边距模式
paperSize?DocxPaperSize⬜必须来自预定义的纸张大小选项
showPageNumbers?boolean⬜true/false
DocxTypographySchema

验证 DOCX 的排版设置。

属性类型必需验证规则
fontSize?DocxFontSize⬜必须来自预定义的字体大小选项
fontFamily?string⬜逗号分隔的字体家族列表。
lineSpacing?LineSpacing⬜必须来自预定义的行间距选项

原始验证模式

电子邮件模式

使用严格格式要求验证电子邮件地址。

验证规则:

  • 必须是有效的电子邮件格式
  • 模式:^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$
  • 示例:hi@ppresume.com、first.last@company.org、test+tag@domain.co.uk

电话模式

使用灵活格式支持验证电话号码。

验证规则:

  • 模式:^[+]?[(]?[0-9\\s-]{1,15}[)]?[0-9\\s-]{1,15}$
  • 可能包括国家代码、括号、空格和连字符
  • 示例:555-123-4567、+44 20 7946 0958、(555) 123-4567

摘要模式

使用长度约束验证摘要文本。

验证规则:

  • 必须在 16 到 1024 个字符之间
  • 示例:
    • "具有 5 年以上全栈开发经验的软件工程师。"
    • "热衷于用户体验和现代设计原则的创意设计师。"
    • "在按时按预算交付复杂项目方面有良好记录的项目经理。"

URL 模式

使用长度约束验证 URL。

验证规则:

  • 必须是有效的 URL 格式
  • 最大长度为 256 个字符
  • 示例:https://yamlresume.dev、https://ppresume.com、https://github.com/yamlresume/yamlresume

关键词模式

使用单个项目约束验证关键词数组。

验证规则:

  • 字符串数组
  • 每个关键词必须在 1 到 32 个字符之间
  • 示例:["Javascript", "React", "Typescript"]、["Design", "UI", "UX"]

日期模式

使用格式要求验证日期字符串。

验证规则:

  • 必须在 4 到 32 个字符之间
  • 必须可被 Date.parse() 解析
  • 示例:2025-01-01、Jul 2025、July 3, 2025、2025-02-02T00:00:03.123Z

页边距大小模式

使用单位要求验证页边距大小字符串。

验证规则:

  • 必须在 2 到 32 个字符之间
  • 模式:^\\d+(\\.\\d+)?(cm|pt|in)$
  • 必须是正数后跟有效单位:cm、pt 或 in
  • 示例:2.5cm、1in、72pt、0.5cm、12pt

DOCX 字体家族模式

验证 DOCX 输出的字体家族名称。

验证规则:

  • 必须是目标系统上可用的有效字体家族名称
  • 示例:Arial、Times New Roman、Calibri

枚举验证模式

国家

世界上所有可能国家和地区的联合类型。

验证规则:

  • 必须是预定义的国家选项之一
  • 示例:United States、China、United Kingdom、Germany

学位

所有可能学位的联合类型。

验证规则:

  • 必须是以下之一:Associate、Bachelor、Diploma、Doctor、High School、Master、Middle School

熟练程度

所有可能语言熟练程度的联合类型。

验证规则:

  • 必须是以下之一:
    • Elementary Proficiency
    • Full Professional Proficiency
    • Limited Working Proficiency
    • Minimum Professional Proficiency
    • Native or Bilingual Proficiency

语言

所有支持语言的联合类型。

验证规则:

  • 必须是预定义的语言选项之一
  • 示例:English、Chinese、Spanish、French、German

级别

所有可能技能熟练程度的联合类型。

验证规则:

  • 必须是以下之一:Advanced、Beginner、Expert、Intermediate、Master、Novice

网络

所有可能社交网络选项的联合类型。

验证规则:

  • 必须是预定义的网络选项之一
  • 示例:GitHub、LinkedIn、Twitter、Facebook、Instagram

AccentColor

所有可能的强调色预设的联合类型,遵循 moderncv 的配色方案调色板。在任何需要 AccentColor 的地方,也接受任意的 #RRGGBB 十六进制颜色字符串。

验证规则:

  • 必须是以下之一:
    • black - #000000
    • blue - #3873B3
    • burgundy - #980000
    • cerulean - #0081A7
    • green - #59B24D
    • grey - #737373
    • orange - #F28C26
    • purple - #8054CC
    • red - #F23333

LatexTemplate

所有可能模板选项的联合类型。

验证规则:

  • 必须是以下之一:jake、moderncv-banking、moderncv-casual、moderncv-classic
  • 另请参阅:模板

DocxFontSize

所有可能 DOCX 字体大小选项的联合类型。

验证规则:

  • 必须是以下之一:10pt、10.5pt、11pt、11.5pt、12pt
  • 10pt 是默认字体大小

DocxPaperSize

所有可能 DOCX 纸张大小选项的联合类型。

验证规则:

  • 必须是以下之一:a4、letter
  • a4 是默认纸张大小

DocxTemplate

所有可能 DOCX 模板选项的联合类型。

验证规则:

  • 必须是以下之一:calm
  • 另请参阅:模板

HtmlFontSize

所有可能 HTML 字体大小选项的联合类型。

验证规则:

  • 必须是以下之一:14px、15px、16px、17px、18px、19px、20px
  • HTML 引擎支持 14px 到 20px 的字体大小
  • 16px 是默认字体大小

HtmlTemplate

所有可能 HTML 模板选项的联合类型。

验证规则:

  • 必须是以下之一:calm、kami、vscode
  • 另请参阅:模板

LocaleLanguage

所有可能区域语言的联合类型。

验证规则:

  • 必须是以下之一:en、es、zh-hans、zh-hant-hk、zh-hant-tw
  • 另请参阅:多语言

LatexFontspecNumbers

所有可能 latex fontspec 数字选项的联合类型。

验证规则:

  • 必须是以下之一:
    • Auto - 允许根据选定的 LocaleLanguage 自动确定样式(默认)
    • Lining - 标准衬线数字(CJK 语言的默认值)
    • OldStyle - 不同高度的旧式数字(拉丁语言的默认值)

LineSpacing

所有可能的行间距选项的联合类型。

验证规则:

  • 必须是以下之一:
    • tight - 紧凑间距,适合容纳更多内容
    • snug - 比 tight 稍多的空间
    • normal - 均衡的可读性(默认)
    • relaxed - 行之间更多呼吸空间
    • loose - 非常宽松的布局

LatexFontSize

所有可能字体大小选项的联合类型。

验证规则:

  • 必须是以下之一:10pt、11pt、12pt
  • 10pt 是默认字体大小

PaperSize

所有可能的 LaTeX 纸张大小选项的联合类型。

验证规则:

  • 必须是以下之一:a4、letter
Edit on GitHub

Last updated on

On this page