146 lines
4.6 KiB
Markdown
146 lines
4.6 KiB
Markdown
|
|
# CLI简历生成工具
|
|||
|
|
|
|||
|
|
`CLI` `简历` `PDF` `Bun` `模板`
|
|||
|
|
|
|||
|
|
# resumy
|
|||
|
|
|
|||
|
|
English README / [中文文档](https://github.com/ahpxex/resume-cli/blob/main/README.zh-CN.md)
|
|||
|
|
|
|||
|
|
`resumy` 是一个以 Bun 为核心的 CLI 工具,可通过结构化参数和内置模板生成精美简历。设计目标是保持可脚本化、确定性,并对偏好显式命令输入而非交互式流程的 Agent 或高级用户友好。
|
|||
|
|
|
|||
|
|
## 安装
|
|||
|
|
|
|||
|
|
使用 Bun 全局安装 `resumy`:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
bun add -g resumy
|
|||
|
|
bun install -g resumy
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
安装后,全局命令为:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
resumy --help
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 发布到 npm
|
|||
|
|
|
|||
|
|
将包公开发布到 npm:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
npm login
|
|||
|
|
npm publish
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
发布后,其他用户可以用 Bun 全局安装并直接调用 `resumy`。
|
|||
|
|
|
|||
|
|
## 安装 Agent Skill
|
|||
|
|
|
|||
|
|
本仓库还为 `skills` 安装器提供了 `agent-resume` skill。
|
|||
|
|
|
|||
|
|
从 GitHub 安装:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
bunx skills add https://github.com/ahpxex/resume-cli --skill agent-resume
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
开发时本地调试:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
bunx skills add . --list
|
|||
|
|
bunx skills add . --skill agent-resume
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 快速开始
|
|||
|
|
|
|||
|
|
列出内置模板:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
resumy templates
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
生成 PDF 简历:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
resumy generate pdf \
|
|||
|
|
--theme professional \
|
|||
|
|
--name "Jordan Lee" \
|
|||
|
|
--title "产品工程师" \
|
|||
|
|
--email "jordan@example.com" \
|
|||
|
|
--phone "+1 (555) 123-4567" \
|
|||
|
|
--location "旧金山,加利福尼亚" \
|
|||
|
|
--website "https://jordanlee.dev" \
|
|||
|
|
--link "GitHub|https://github.com/jordanlee" \
|
|||
|
|
--link "LinkedIn|https://linkedin.com/in/jordanlee" \
|
|||
|
|
--summary "具有产品思维的工程师,有丰富的精美用户体验交付经验。" \
|
|||
|
|
--experience "role=高级产品工程师;company=Northstar Labs;start=2022;end=至今;location=远程;summary=主导面向客户工作流的前端架构。" \
|
|||
|
|
--experience-bullet "0|跨三个产品团队构建了基于设计系统的 UI 平台。" \
|
|||
|
|
--experience-bullet "0|通过引导式设置流程将新用户引导完成率提升了 18%。" \
|
|||
|
|
--experience-tech "0|TypeScript, React, Bun, 设计系统" \
|
|||
|
|
--project "name=Resume Studio;role=创建者;url=https://github.com/jordanlee/resume-studio;summary=一个面向结构化内容的模板驱动简历渲染器。" \
|
|||
|
|
--project-bullet "0|设计了支持多种布局的标准化简历数据结构。" \
|
|||
|
|
--project-tech "0|TypeScript, Bun, HTML, CSS" \
|
|||
|
|
--education "institution=华盛顿大学;degree=计算机科学学士;start=2015;end=2019;location=西雅图,华盛顿州" \
|
|||
|
|
--education-highlight "0|专注于人机交互与分布式系统。" \
|
|||
|
|
--skill-group "编程语言|TypeScript, JavaScript, SQL, HTML, CSS" \
|
|||
|
|
--skill-group "框架|React, Next.js, Bun, Node.js" \
|
|||
|
|
--extra "认证|AWS 认证云从业者" \
|
|||
|
|
--output ./dist/resume.pdf
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
同时输出中间 HTML 文件:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
resumy generate pdf ... --html-output ./dist/resume.html
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 命令
|
|||
|
|
|
|||
|
|
- `resumy templates`:列出内置布局
|
|||
|
|
- `resumy generate pdf`:通过显式参数生成 PDF 简历
|
|||
|
|
|
|||
|
|
## PDF 导出原理
|
|||
|
|
|
|||
|
|
`resumy` 先将结构化简历数据渲染为 HTML,然后通过 Playwright 启动无头浏览器,让浏览器将该 HTML 打印为 PDF。这样既保持了模板开发的简洁性,又保留了浏览器级别的布局、字体、颜色和打印样式。
|
|||
|
|
|
|||
|
|
## Playwright 与 Chromium
|
|||
|
|
|
|||
|
|
- `resumy` 依赖 Playwright JavaScript 包进行浏览器自动化。
|
|||
|
|
- 发布的 `resumy` 包本身不在包内捆绑 Chromium 二进制文件。
|
|||
|
|
- 运行时,`resumy` 优先使用 Playwright 的 Chromium;如果不可用,则回退到本地安装的 Google Chrome。
|
|||
|
|
- 如果两者都不可用,请通过 `bunx playwright install chromium` 安装 Chromium。
|
|||
|
|
|
|||
|
|
## 输入模型
|
|||
|
|
|
|||
|
|
CLI 设计上是显式的,重复条目通过重复参数传入:
|
|||
|
|
|
|||
|
|
- `--experience "role=...;company=...;start=...;end=...;location=...;summary=..."`
|
|||
|
|
- `--experience-bullet "0|构建了某项功能"`
|
|||
|
|
- `--experience-tech "0|TypeScript, React, Bun"`
|
|||
|
|
- `--project "name=...;role=...;url=...;summary=..."`
|
|||
|
|
- `--project-bullet "0|交付了某项功能"`
|
|||
|
|
- `--project-tech "0|TypeScript, Bun, HTML, CSS"`
|
|||
|
|
- `--education "institution=...;degree=...;start=...;end=...;location=..."`
|
|||
|
|
- `--education-highlight "0|专注于..."`
|
|||
|
|
- `--skill-group "编程语言|TypeScript, JavaScript, SQL"`
|
|||
|
|
- `--extra "认证|AWS 认证云从业者"`
|
|||
|
|
|
|||
|
|
使用从零开始的索引将要点和技术栈附加到对应条目。
|
|||
|
|
|
|||
|
|
## 排版选项
|
|||
|
|
|
|||
|
|
- `--density`:`standard`(标准)或 `compact`(紧凑)
|
|||
|
|
- `--theme-color`:链接、标题及视觉细节的强调色
|
|||
|
|
- `--font-family`:正文字体栈
|
|||
|
|
- `--heading-font-family`:标题字体栈
|
|||
|
|
- `--font-face`:嵌入本地 `.ttf`、`.otf`、`.woff` 或 `.woff2` 字体文件
|
|||
|
|
|
|||
|
|
## 开发
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
bun install
|
|||
|
|
bun run check
|
|||
|
|
bun test
|
|||
|
|
bun run build
|
|||
|
|
npm publish --dry-run
|
|||
|
|
```
|