3 个不稳定版本
0.2.2 | 2020年11月20日 |
---|---|
0.2.0 | 2020年7月16日 |
0.1.0 | 2020年7月15日 |
#2751 在 命令行工具
125KB
562 行
qcv
是一个从 JSON 模板生成 HTML 简历的工具。
内容
使用场景
在 Git 中维护 JSON 简历
该工具允许将简历信息放在一个 JSON 文件中。它可以被存储在 git
仓库中,以便更新过程更加顺畅。可以应用分支以处理不同的版本;差异跟踪更加简单。不再需要 CV_1.pdf
,CV_1_updated.pdf
,CV_1_updated_for_facebook.pdf
。
控制和跟踪信息
无需在生成简历或/和存储简历的不同服务之间切换。
生成简单的个人网站
该工具根据可定制的 HTML 模板生成 HTML 文件。
工作原理
该工具将 HTML 模板中的变量替换为 JSON 模板中相应的值(请参阅 src/assets/themes
)。示例:这是一个 HTML 模板
<div>{{basics.name}}<div>
这是 JSON 模板
{
"basics": {
"name": "John Doe"
}
}
所以结果将是以下这样
<div>John Doe</div>
格式化规则
cv.json
以下是一个 JSON 模板示例。它将由 init
命令生成。它创建具有相似内容的 cv.json
文件。
{
"basics": {
"name": "John Doe",
"label": "Programmer",
"email": "[email protected]",
"phone": "(912) 555-4321",
"website": "http://johndoe.com",
"summary": "A brief summary on who I am",
"location": {
"country": "The Johnited States Of Doe",
"address": "2712 Broadway St",
"city": "San Francisco"
},
"profiles": [{
"network": "Twitter",
"username": "john",
"url": "http://twitter.com/john"
}]
},
"work": [{
"company": "Company",
"position": "President",
"website": "http://company.com",
"start_date": "2013-01-01",
"end_date": "2014-01-01",
"summary": "Description..."
}],
"projects": [{
"name": "An app to track time",
"description": "A web and mobile application that allowed 2500 people to track their working time"
}],
"education": [{
"institution": "University",
"area": "Software Development",
"study_type": "Bachelor",
"start_date": "2011-01-01",
"end_date": "2013-01-01",
"courses": [
"DB1101 - Basic SQL"
],
"location": "Washington DC, US"
}],
"skills": [{ "name": "Web Development" }],
"languages": [{
"language": "English",
"level": "Native speaker"
}]
}
将您的信息放入此文件。然后使用 build simple
命令生成 cv.html
输出。
可用主题
请参阅 主题文档
自定义 HTML 主题
您有能力构建自己的自定义 HTML 模板并从中生成简历。示例
$ qcv build-from my_theme.html
HTML 模板的格式化规则
作为参考,您可以使用 "simple" 主题(src/assets/themes/simple/index.html
)。
原始/简单值
在HTML模板中的{{ root_key }}
内的值会查找cv.json
文件中的}{ root_key }}
键,并将其替换为相应的值。嵌套键应写作}{ root.nested.more_nested }}
。例如,我们有以下cv.json
{
"basics": {
"name": "John Doe",
"label": "Programmer",
},
}
主题可以是
<section id="main-info">
<h1>{{ basics.name }}</h1>
<!-- It doesn't matter if you use wrapping spaces or not inside {{ }} -->
<h2>{{basics.label}}</h2>
</section>
CSS样式可以放在<style>
中,也可以放在JavaScript代码中。模板只是一个包含}{ }}
的HTML,这些将用cv.json
中的值替换。
数组
cv.json
包含对象数组。例如
{
"basics": {
"profiles": [{
"network": "Twitter",
"username": "john",
"url": "http://twitter.com/john"
}]
}
}
映射数组值的语法是
<!-- Point a key which value is an array -->
{! basics.profiles
<!-- Note the number of braces here: { } not {{ }} -->
<!-- Number of spaces inside { } also doesn't matter -->
<div>{network}</div>
<p>{username}</p>
<a href="{url}">{url}</a>
!}
安装
安装crate
如果您已安装Cargo,请下载qcv crate并在终端中使用它。
$ cargo install qcv
# Usage
$ qcv init
$ qcv build simple
安装二进制文件
在发布部分下载存档。例如,对于Ubuntu,下载...x86_64-unknown-linux-gnu.tar.gz
,解压后按照以下方式使用
# Create a JSON template
./qcv init
# Generate HTML file
./qcv build simple
克隆仓库
如果您已安装Rust生态系统,请使用此方法。
$ git clone <repo>
# Create cv.json template
$ cargo run init
# Build cv.html result based on cv.json
$ cargo run build simple
依赖关系
~9–18MB
~149K SLoC