HackMyResume

用 HTML、Markdown、LaTeX、MS Word、PDF、纯文本、JSON、XML、YAML、"烟雾信号"和"信鸽"生成精美的简历。「 Generate polished résumés and CVs in HTML, Markdown, LaTeX, MS Word, PDF, plain text, JSON, XML, YAML, smoke signal, and carrier pigeon. 」

  • 所有者: hacksalot/HackMyResume
  • 平台: Linux, Mac, Windows
  • 許可證: MIT License
  • 分類:
  • 主題:
  • 喜歡:
    0
      比較:

Github星跟蹤圖

HackMyResume

从你的命令行或者 shell 创建多种格式的精美简历和个人简历。在干净的Markdown 和 JSON 中创作,导出为 Word、HTML、PDF、LaTeX、 纯文本和其他任意格式。战斗的力量,拯救树木。与 FRESHJRS 简历兼容。

HackMyResume 是一款适合开发人员使用的瑞士军刀,只适用于本地的简历和CVs。用它来:

  1. 生成 HTML、Markdown、LaTeX、MS Word、PDF、纯文本、JSON、XML、YAML、打印、烟雾信号、信鸽和其他任意格式的简历和 CVs,来自单一的事实来源 -- 不会违反DRY。
  2. 分析你的简历中关键词的密度、差距和其他指标。
  3. FRESH JSON Resume 之间转换格式。
  4. 根据两种格式验证简历。

HackMyResume 是使用 Node.js 构建的,可在最新版本的 OS X、Linux 或 Windows 上运行。 查看常见问题

特性

  • OS X、Linux 和 Windows。
  • 从数十种 FRESH 或 JSON 简历主题中进行选择。
  • 专用的、本地的简历创作和分析。
  • 分析您的简历以了解关键字、差距和其他指标。
  • 将您的简历数据存储为持久的,可版本化的 JSON 或 YAML 文档。
  • 在不违反 DRY 的情况下以多种格式制作精美的简历。
  • 输出为 HTML、Markdown、LaTeX、PDF、MS Word、JSON、YAML、纯文本或 XML。
  • 根据 FRESH 或 JSON 简历模式验证简历。
  • 支持多个输入和输出恢复。
  • 在 FRESH 和 JSON 简历之间转换。
  • 在您的命令行或桌面上使用。
  • 通过 MIT 许可获得免费和开放源代码。
  • 每日/每周更新。贡献是受欢迎的

安装

使用 NPM 安装最新的稳定版 HackMyResume:

[sudo] npm install hackmyresume -g

或者,安装最新的最新版本(每日更新):

[sudo] npm install hacksalot/hackmyresume#dev -g

安装 PDF 支持(可选)

HackMyResume 尽力避免对用户强加特定的 PDF 引擎要求,而是将与您安装的任何 PDF 引擎一起工作。

目前,HackMyResume 的 PDF 生成需要在您的系统上安装 Phantom.js wkhtmltopdf WeasyPrint ,并且相应的二进制文件可以在 PATH 上访问。对于关心 PDF 格式的用户,这是一个可选的要求。如果您不关心 PDF 格式,请跳过这一步。

安装主题

HackMyResume 同时支持 FRESH JSON Resume风格的简历主题。

  • FRESH 主题目前预装了 HackMyResume。
  • JSON 简历主题可以从 NPM、GitHub 或手动安装。

要安装 JSON 简历主题,只需cd到要存储主题的文件夹,然后运行以下命令之一:

#使用 NPM 安装
npm install jsonresume-theme-[theme-name]
#用GitHub安装
git clone https://github.com/[user-or-org]/[repo-name]

然后,当您准备好生成简历时,只需在安装时引用主题文件夹的位置:

hackmyresume build resume.json TO out/resume.all -t node_modules/jsonresume-theme-classy

注意:您可以在文件系统的任何位置使用安装主题。 您不需要 package.json 或其他 NPM/Node 基础结构。

入门

要使用 HackMyResume,您需要以 FRESH JSON Resume 格式创建有效的简历。 然后,您可以开始使用命令行工具。您应该注意五个基本命令:

  • build 生成HTML、Word、Markdown、PDF和其他格式的简历。当你需要提交、上传、打印或发送特定格式的简历时,可以使用它。
    # hackmyresume build <INPUTS...> TO <OUTPUTS...> [-t THEME]
    hackmyresume build resume.json TO out/resume.all
    hackmyresume build r1.json r2.json TO out/rez.html out/rez.md foo/rez.all
    	
  • 以 FRESH 或 JSON 简历格式创建新简历。
    # hackmyresume new <OUTPUTS...> [-f <FORMAT>]
    hackmyresume new resume.json
    hackmyresume new resume.json -f fresh
    hackmyresume new r1.json r2.json -f jrs
    	
  • 分析 检查你的简历中的关键词、持续时间和其他指标。
    # hackmyresume convert <INPUTS...> TO <OUTPUTS...>
    hackmyresume convert resume.json TO resume-jrs.json
    hackmyresume convert 1.json 2.json 3.json TO out/1.json out/2.json out/3.json
    	
  • 转换 可将您的源简历转换为FRESH和JSON简历 格式。使用它在两种格式之间进行转换以利用工具和服务。
    # hackmyresume convert <INPUTS...> TO <OUTPUTS...>
    hackmyresume convert resume.json TO resume-jrs.json
    hackmyresume convert 1.json 2.json 3.json TO out/1.json out/2.json out/3.json
    	
  • 验证 根据 FRESH 或 JSON 简历模式验证指定的简历。使用它来确保你的简历数据是充分和完整的。
    # hackmyresume validate <INPUTS...>
    hackmyresume validate resume.json
    hackmyresume validate r1.json r2.json r3.json
    	
  • peek 将简历或简历上的任何字段、属性或对象路径回显到标准输出。
    # hackmyresume validate <INPUTS...>
    hackmyresume validate resume.json
    hackmyresume validate r1.json r2.json r3.json
    	

支持的输出格式

HackMyResume 支持以下输出格式:

输出格式 Ext 注意
HTML .html A standard HTML 5 + CSS resume format that can be viewed in a browser, deployed to a website, etc.
Markdown .md A structured Markdown document that can be used as-is or used to generate HTML.
LaTeX .tex A structured LaTeX document (or collection of documents) that can be processed with pdflatex, xelatex, and similar tools.
MS Word .doc A Microsoft Word office document (XML-driven; WordProcessingML).
Adobe Acrobat (PDF) .pdf A binary PDF document driven by an HTML theme (through wkhtmltopdf).
plain text .txt A formatted plain text document appropriate for emails or copy-paste.
JSON .json A JSON representation of the resume.
YAML .yml A YAML representation of the resume.
RTF .rtf Forthcoming.
Textile .textile Forthcoming.
image .png, .bmp Forthcoming.

使用

假设您手边有一份 json 格式的简历,生成不同格式和组合的简历很容易。只需运行:

hackmyresume build <inputs> to <outputs> [-t theme].

其中 <inputs> 是一个或多个 .json 简历文件,用空格分隔; <outputs><> 是一个或多个目的地简历,<theme> 是所需的主题(默认为 Modern)。 例如:

# 生成所有的简历格式 (HTML, PDF, DOC, TXT, YML, etc.)
hackmyresume build resume.json TO out/resume.all -t modern
# 生成特定的简历格式
hackmyresume build resume.json TO out/resume.html
hackmyresume build resume.json TO out/resume.pdf
hackmyresume build resume.json TO out/resume.md
hackmyresume build resume.json TO out/resume.doc
hackmyresume build resume.json TO out/resume.json
hackmyresume build resume.json TO out/resume.txt
hackmyresume build resume.json TO out/resume.yml
# 指定2个输入和3个输出
hackmyresume build in1.json in2.json TO out.html out.doc out.pdf

您应该看到以下效果:

*** HackMyResume v1.4.0 ***
Reading JSON resume: foo/resume.json
Applying MODERN Theme (7 formats)
Generating HTML resume: out/resume.html
Generating TXT resume: out/resume.txt
Generating DOC resume: out/resume.doc
Generating PDF resume: out/resume.pdf
Generating JSON resume: out/resume.json
Generating MARKDOWN resume: out/resume.md
Generating YAML resume: out/resume.yml

高级

应用主题

HackMyResume 可以使用任何 FRESH 或 JSON Resume 主题(后者必须是 首先安装)。要在生成简历时指定主题,请使用 -t 或 --theme 参数:

hackmyresume build resume.json TO out/rez.all -t [theme]

参数 [theme] 可以是预定义主题的名称,也可以是指向任何 FRESH 或 JSON Resume 主题文件夹的路径

hackmyresume build resume.json TO out/rez.all -t modern
hackmyresume build resume.json TO OUT.rez.all -t ../some-folder/my-custom-theme/
hackmyresume build resume.json TO OUT.rez.all -t node_modules/jsonresume-theme-classy

FRESH 主题目前已预装在 HackMyResume 中。 JSON 简历主题可以在使用前安装:

 #将 JSON 简历主题安装到本地 node_modules 子文件夹中:
npm install jsonresume-theme-[name]
# Use it with HackMyResume
hackmyresume build resume.json -t node_modules/jsonresume-theme-[name]

从 v1.6.0 开始,可用的预定义 FRESH 主题是积极的、现代的、紧凑的、最小化的和 hello-world。 有关 JSON Resume 主题的列表,请查看 NPM Registry

合并简历

您可以将多个简历按照从最一般到最具体的顺序进行指定,从而将它们合并在一起

#将 specific.json 合并到 base.json 并生成所有格式
hackmyresume build base.json specific.json TO resume.all

这对于用来自特定(目标)简历的信息覆盖基本(通用)简历非常有用。例如,您可以使用目标游戏开发人员简历中的特定细节覆盖通用的软件开发人员简历,或者将两份部分简历合并为完整的简历。合并遵循传统的 extend() 风格的行为,并且对于可以合并多少份简历没有任何限制:

hackmyresume build in1.json in2.json in3.json in4.json TO out.html out.doc
Reading JSON resume: in1.json
Reading JSON resume: in2.json
Reading JSON resume: in3.json
Reading JSON resume: in4.json
Merging in4.json onto in3.json onto in2.json onto in1.json
Generating HTML resume: out.html
Generating WORD resume: out.doc

多个目标

您可以指定多个输出目标,HackMyResume将构建它们:

# Generate out1.doc, out1.pdf, and foo.txt from me.json.
hackmyresume build me.json TO out1.doc out1.pdf foo.txt

使用 .all

特殊的 .all 扩展告诉 HackMyResume 为给定的简历生成所有受支持的输出格式。例如,这个……

#生成所有简历格式(HTML,PDF,DOC,TXT等)
hackmyresume build me.json TO out/resume.all

告诉 HackMyResume 读取 me.json 并生成 out/resume.md、out/resume.doc、out/resume.html、out/resume.txt、out/resume.pdf 和 out/resume.json。

建立 PDFs

不关心 PDF 的用户可以使用 --PDF none开关关闭所有主题和格式的 PDF 生成。

HackMyResume 采用独特的 PDF 生成方法。 HackMyResume 将尝试使用通过引擎的命令行界面(CLI)安装的任何 PDF 引擎,而不是在用户上强制执行特定的 PDF 引擎。 目前,这意味着......

......未来计划支持的其他引擎。但是现在,为了使用 HackMyResume 生成 PDF 简历,必须在您的路径上安装或访问这些引擎中的一个或多个。这意味着您应该能够从您的 shell 或终端直接调用这些工具,而不会出错:

wkhtmltopdf input.html output.pdf
phantomjs script.js input.html output.pdf
weasyprint input.html output.pdf

假设您已经在系统上安装了一个或两个这些引擎,您可以通过 --pdf 选项(简写 -p )告诉HackMyResume 使用哪种格式的PDF生成:

hackmyresume build resume.json TO out.all --pdf phantom
hackmyresume build resume.json TO out.all --pdf wkhtmltopdf
hackmyresume build resume.json TO out.all --pdf weasyprint
hackmyresume build resume.json TO out.all --pdf none

分析

HackMyResume 可以分析你的简历关键字、就业差距和其他 指标。运行:

hackmyresume analyze <my-resume>.json

根据 HackMyResume 版本的不同,您应该看到类似于以下内容的输出:

*** HackMyResume v1.6.0 ***
Reading resume: resume.json
Analyzing FRESH resume: resume.json
SECTIONS (10):
        employment:    12
         education:     2
           service:     1
            skills:     8
           writing:     1
       recognition:     0
            social:     4
         interests:     2
        references:     1
         languages:     2
COVERAGE (61.1%):
        Total Days:  6034
          Employed:  3688
              Gaps:     8  [31, 1065, 273, 153, 671, 61, 61, 31]
          Overlaps:     1  [243]
KEYWORDS (61):
           Node.js:     6 mentions
        JavaScript:     9 mentions
        SQL Server:     3 mentions
     Visual Studio:     6 mentions
           Web API:     1 mentions
   N-tier / 3-tier:     1 mentions
            HTML 5:     1 mentions
        JavaScript:     6 mentions
               CSS:     2 mentions
Sass / LESS / SCSS:     1 mentions
              LAMP:     3 mentions
              WISC:     1 mentions
              HTTP:    21 mentions
              JSON:     1 mentions
               XML:     2 mentions
              REST:     1 mentions
        WebSockets:     2 mentions
       Backbone.js:     3 mentions
        Angular.js:     1 mentions
           Node.js:     4 mentions
               NPM:     1 mentions
             Bower:     1 mentions
             Grunt:     2 mentions
              Gulp:     1 mentions
            jQuery:     2 mentions
         Bootstrap:     3 mentions
     Underscore.js:     1 mentions
         PhantomJS:     1 mentions
      CoffeeScript:     1 mentions
            Python:    11 mentions
              Perl:     4 mentions
               PHP:     7 mentions
             MySQL:    12 mentions
        PostgreSQL:     4 mentions
             NoSQL:     2 mentions
            Apache:     2 mentions
               AWS:     2 mentions
               EC2:     2 mentions
               RDS:     3 mentions
                S3:     1 mentions
             Azure:     1 mentions
         Rackspace:     1 mentions
               C++:    23 mentions
            C++ 11:     1 mentions
             Boost:     1 mentions
             Xcode:     2 mentions
               gcc:     1 mentions
             OO&AD:     1 mentions
              .NET:    20 mentions
           Unity 5:     2 mentions
              Mono:     3 mentions
       MonoDevelop:     1 mentions
           Xamarin:     1 mentions
             TOTAL:   180 mentions

验证

HackMyResume 还可以根据 FRESH/FRESCA JSON Resume 格式验证一个或多个现有的简历,使用 validate 命令:

#针对 FRESH 或 JSON Resume 模式验证 myresume.json。
hackmyresume validate resumeA.json resumeB.json

HackMyResume 将依次验证每个指定的简历:

*** HackMyResume v1.6.0 ***
Validating JSON resume: resumeA.json (INVALID)
Validating JSON resume: resumeB.json (VALID)

转换

HackMyResume 可以在 FRESH JSON Resume 格 式之间进行转换。只需运行:

hackmyresume convert <INPUTS> <OUTPUTS>

其中<inputs> 是一个或多个以 FRESH 或 JSON 简历格式的简历 <outputs> 是输出文件名的相应列表。 HackMyResume 会自动检测每个输入简历的格式(FRESH 或 JRS)并将其转换为其他格式(JRS 或 FRESH)。

基于文件的选项

您可以通过外部选项或“.hackmyrc”将选项传递给HackMyResume 文件与 - 选项或 -o 开关: 您可以通过外部选项或 .hackmyrc 文件将选项传递到 HackMyResume,其中带有--options 或 -o 开关

hackmyresume build resume.json -o path/to/options.json

选项文件可以包含任何记录的 HackMyResume 选项,包括 theme、silent、debug、pdf、css 和其他设置。

{
  "theme": "compact",
  "sectionTitles": {
    "employment": "Work"
  },
  "wkhtmltopdf": {
    "margin-top": "20mm"
  }
}

如果在命令行和外部选项文件中都指定了一个选项,则命令行选项优先。

#path/to/options.json 指定了 POSITIVE 主题
#-t 参数指定 COMPACT 主题
#-t 参数获胜。
hackmyresume build resume.json -o path/to/options.json -t compact
> Reading resume: resume.json
> Applying COMPACT theme (7 formats)

美化

HackMyResume 默认情况下对 HTML 格式的简历应用 js-beautify 样式的 HTML 美化。要禁用修饰,可以使用 —no-prettify 或 -n 标志。

hackmyresume build resume.json out.all --no-prettify

静音模式

使用 -s 或 --silent 以无提示模式运行:

hackmyresume BUILD resume.json -o someFile.all -s
hackmyresume BUILD resume.json -o someFile.all --silent

调试模式

使用 -d 或 --debug 强制 HMR 在发生错误时发出调用堆栈。在 未来,这个选项会发出详细的错误记录。

hackmyresume BUILD resume.json -d
hackmyresume ANALYZE resume.json --debug

禁用编码

使用 -no-escape 选项禁用 Handlebars 主题中的编码。注意: 此选项对非 Handlebars主题没有影响。

hackmyresume build resume.json --no-escape

私人的简历字段

有一个演出、教育阶段、会员资格或其他相关历史,你想隐藏大多数(例如公共)简历,但有时会在别人身上显示? 使用“private”标记它:true 默认情况下从出站生成的简历中省略它。

"employment": {
  "history": [
    {
      "employer": "Acme Real Estate"
    },
    {
      "employer": "Area 51 Alien Research Laboratory",
      "private": true
    },
    {
      "employer": "H&R Block"
    }
  ]

然后,当你想要一份包括私人零工等内容的简历副本时,告诉 HackMyResume 可以发送私人字段。你可以用 -private 开关。

hackmyresume build resume.json private-resume.all --private

自定义主题助手

您可以使用主题的 theme.json 文件的帮助键将自己的自定义 Handlebars 助手附加到 FRESH 主题。

{
  "title": "my-cool-theme",
  // ...
  "helpers": [
    "../path/to/helpers/*.js",
    "some-other-helper.js"
  ]
}

HackMyResume将尝试加载每个路径或glob并使用Handlebars.registerHelper注册任何指定的文件,使它们可用于您的主题。

贡献

HackMyResume 是 MIT 许可下的社区驱动的免费和开源项目。 鼓励捐款,我们及时回应所有PR和问题。 有关详细信息,请参阅 CONTRIBUTING.md。

贡献

HackMyResume 是 MIT 的社区驱动的免费和开源项目 执照。鼓励捐款,我们回应所有PR和问题, 通常在24小时内。有关详细信息,请参阅 CONTRIBUTING.md

许可证

MIT。疯了。详情请参阅 LICENSE.md

(First edition: vz edited at 2019.08.26)

主要指標

概覽
名稱與所有者hacksalot/HackMyResume
主編程語言JavaScript
編程語言JavaScript (語言數: 3)
平台Linux, Mac, Windows
許可證MIT License
所有者活动
創建於2015-09-24 15:40:22
推送於2022-04-03 22:14:29
最后一次提交2018-02-14 11:23:51
發布數41
最新版本名稱v1.9.0-beta (發布於 2018-02-12 07:36:04)
第一版名稱v0.1.0 (發布於 )
用户参与
星數9.3k
關注者數201
派生數529
提交數784
已啟用問題?
問題數173
打開的問題數60
拉請求數47
打開的拉請求數7
關閉的拉請求數12
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?

HackMyResume

Latest release
Build status (MASTER)
Build status (DEV)
Join the chat at https://gitter.im/hacksalot/HackMyResume

Create polished résumés and CVs in multiple formats from your command line or
shell. Author in clean Markdown and JSON, export to Word, HTML, PDF, LaTeX,
plain text, and other arbitrary formats. Fight the power, save trees. Compatible
with FRESH and JRS resumes.

HackMyResume is a dev-friendly, local-only Swiss Army knife for resumes and CVs.
Use it to:

  1. Generate HTML, Markdown, LaTeX, MS Word, PDF, plain text, JSON, XML,
    YAML, print, smoke signal, carrier pigeon, and other arbitrary-format resumes
    and CVs, from a single source of truth—without violating DRY.
  2. Analyze your resume for keyword density, gaps/overlaps, and other
    metrics.
  3. Convert resumes between FRESH and JSON Resume formats.
  4. Validate resumes against either format.

HackMyResume is built with Node.js and runs on recent versions of OS X, Linux,
or Windows. View the FAQ.

Features

  • OS X, Linux, and Windows.
  • Choose from dozens of FRESH or JSON Resume themes.
  • Private, local-only resume authoring and analysis.
  • Analyze your resume for keywords, gaps, and other metrics.
  • Store your resume data as a durable, versionable JSON or YAML document.
  • Generate polished resumes in multiple formats without violating DRY.
  • Output to HTML, Markdown, LaTeX, PDF, MS Word, JSON, YAML, plain text, or XML.
  • Validate resumes against the FRESH or JSON Resume schema.
  • Support for multiple input and output resumes.
  • Convert between FRESH and JSON Resume resumes.
  • Use from your command line or desktop.
  • Free and open-source through the MIT license.
  • Updated daily / weekly. Contributions are welcome.

Install

Install the latest stable version of HackMyResume with NPM:

[sudo] npm install hackmyresume -g

Alternately, install the latest bleeding-edge version (updated daily):

[sudo] npm install hacksalot/hackmyresume#dev -g

Installing PDF Support (optional)

HackMyResume tries not to impose a specific PDF engine requirement on
the user, but will instead work with whatever PDF engines you have installed.

Currently, HackMyResume's PDF generation requires one of Phantom.js,
wkhtmltopdf, or WeasyPrint to be installed on your system and the
corresponding binary to be accessible on your PATH. This is an optional
requirement for users who care about PDF formats. If you don't care about PDF
formats, skip this step.

Installing Themes

HackMyResume supports both FRESH and JSON Resume-style
résumé themes.

  • FRESH themes currently come preinstalled with HackMyResume.
  • JSON Resume themes can be installed from NPM, GitHub, or manually.

To install a JSON Resume theme, just cd to the folder where you want to store
your themes and run one of:

# Install with NPM
npm install jsonresume-theme-[theme-name]

# Install with GitHub
git clone https://github.com/[user-or-org]/[repo-name]

Then when you're ready to generate your resume, just reference the location of
the theme folder as you installed it:

hackmyresume build resume.json TO out/resume.all -t node_modules/jsonresume-theme-classy

Note: You can use install themes anywhere on your file system. You don't need a
package.json or other NPM/Node infrastructure.

Getting Started

To use HackMyResume you'll need to create a valid resume in either
FRESH or JSON Resume format. Then you can start using the command
line tool. There are five basic commands you should be aware of:

  • build generates resumes in HTML, Word, Markdown, PDF, and other formats.
    Use it when you need to submit, upload, print, or email resumes in specific
    formats.

    # hackmyresume build <INPUTS...> TO <OUTPUTS...> [-t THEME]
    hackmyresume build resume.json TO out/resume.all
    hackmyresume build r1.json r2.json TO out/rez.html out/rez.md foo/rez.all
    
  • new creates a new resume in FRESH or JSON Resume format.

    # hackmyresume new <OUTPUTS...> [-f <FORMAT>]
    hackmyresume new resume.json
    hackmyresume new resume.json -f fresh
    hackmyresume new r1.json r2.json -f jrs
    
  • analyze inspects your resume for keywords, duration, and other metrics.

    # hackmyresume analyze <INPUTS...>
    hackmyresume analyze resume.json
    hackmyresume analyze r1.json r2.json
    
  • convert converts your source resume between FRESH and JSON Resume
    formats. Use it to convert between the two formats to take advantage of tools
    and services.

    # hackmyresume convert <INPUTS...> TO <OUTPUTS...>
    hackmyresume convert resume.json TO resume-jrs.json
    hackmyresume convert 1.json 2.json 3.json TO out/1.json out/2.json out/3.json
    
  • validate validates the specified resume against either the FRESH or JSON
    Resume schema. Use it to make sure your resume data is sufficient and complete.

    # hackmyresume validate <INPUTS...>
    hackmyresume validate resume.json
    hackmyresume validate r1.json r2.json r3.json
    
  • peek echoes your resume or any field, property, or object path on your
    resume to standard output.

    # hackmyresume peek <INPUTS...> [OBJECT-PATH]
    hackmyresume peek rez.json # Echo the whole resume
    hackmyresume peek rez.json info.brief # Echo the "info.brief" field
    hackmyresume peek rez.json employment.history[1] # Echo the 1st job
    hackmyresume peek rez.json rez2.json info.brief # Compare value
    

Supported Output Formats

HackMyResume supports these output formats:

Output Format, Ext, Notes
-------------, ---, -----
HTML, .html, A standard HTML 5 + CSS resume format that can be viewed in a browser, deployed to a website, etc.
Markdown, .md, A structured Markdown document that can be used as-is or used to generate HTML.
LaTeX, .tex, A structured LaTeX document (or collection of documents) that can be processed with pdflatex, xelatex, and similar tools.
MS Word, .doc, A Microsoft Word office document (XML-driven; WordProcessingML).
Adobe Acrobat (PDF), .pdf, A binary PDF document driven by an HTML theme (through wkhtmltopdf).
plain text, .txt, A formatted plain text document appropriate for emails or copy-paste.
JSON, .json, A JSON representation of the resume.
YAML, .yml, A YAML representation of the resume.
RTF, .rtf, Forthcoming.
Textile, .textile, Forthcoming.
image, .png, .bmp, Forthcoming.

Use

Assuming you've got a JSON-formatted resume handy, generating resumes in
different formats and combinations is easy. Just run:

hackmyresume build <inputs> to <outputs> [-t theme].

Where <INPUTS> is one or more .json resume files, separated by spaces;
<OUTPUTS> is one or more destination resumes, and <THEME> is the desired
theme (default to Modern). For example:

# Generate all resume formats (HTML, PDF, DOC, TXT, YML, etc.)
hackmyresume build resume.json TO out/resume.all -t modern

# Generate a specific resume format
hackmyresume build resume.json TO out/resume.html
hackmyresume build resume.json TO out/resume.pdf
hackmyresume build resume.json TO out/resume.md
hackmyresume build resume.json TO out/resume.doc
hackmyresume build resume.json TO out/resume.json
hackmyresume build resume.json TO out/resume.txt
hackmyresume build resume.json TO out/resume.yml

# Specify 2 inputs and 3 outputs
hackmyresume build in1.json in2.json TO out.html out.doc out.pdf

You should see something to the effect of:

*** HackMyResume v1.4.0 ***
Reading JSON resume: foo/resume.json
Applying MODERN Theme (7 formats)
Generating HTML resume: out/resume.html
Generating TXT resume: out/resume.txt
Generating DOC resume: out/resume.doc
Generating PDF resume: out/resume.pdf
Generating JSON resume: out/resume.json
Generating MARKDOWN resume: out/resume.md
Generating YAML resume: out/resume.yml

Advanced

Applying a theme

HackMyResume can work with any FRESH or JSON Resume theme (the latter must be
installed first). To specify a theme when generating your resume, use the -t
or --theme parameter:

hackmyresume build resume.json TO out/rez.all -t [theme]

The [theme] parameter can be the name of a predefined theme OR the path to any
FRESH or JSON Resume theme folder:

hackmyresume build resume.json TO out/rez.all -t modern
hackmyresume build resume.json TO OUT.rez.all -t ../some-folder/my-custom-theme/
hackmyresume build resume.json TO OUT.rez.all -t node_modules/jsonresume-theme-classy

FRESH themes are currently pre-installed with HackMyResume. JSON Resume themes
can be installed prior to use:

# Install a JSON Resume theme into a local node_modules subfolder:
npm install jsonresume-theme-[name]
# Use it with HackMyResume
hackmyresume build resume.json -t node_modules/jsonresume-theme-[name]

As of v1.6.0, available predefined FRESH themes are positive, modern,
compact, minimist, and hello-world. For a list of JSON Resume themes,
check the NPM Registry.

Merging resumes

You can merge multiple resumes together by specifying them in order from
most generic to most specific:

# Merge specific.json onto base.json and generate all formats
hackmyresume build base.json specific.json TO resume.all

This can be useful for overriding a base (generic) resume with information from
a specific (targeted) resume. For example, you might override your generic
catch-all "software developer" resume with specific details from your targeted
"game developer" resume, or combine two partial resumes into a "complete"
resume. Merging follows conventional extend()-style behavior and there's
no arbitrary limit to how many resumes you can merge:

hackmyresume build in1.json in2.json in3.json in4.json TO out.html out.doc
Reading JSON resume: in1.json
Reading JSON resume: in2.json
Reading JSON resume: in3.json
Reading JSON resume: in4.json
Merging in4.json onto in3.json onto in2.json onto in1.json
Generating HTML resume: out.html
Generating WORD resume: out.doc

Multiple targets

You can specify multiple output targets and HackMyResume will build them:

# Generate out1.doc, out1.pdf, and foo.txt from me.json.
hackmyresume build me.json TO out1.doc out1.pdf foo.txt

Using .all

The special .all extension tells HackMyResume to generate all supported output
formats for the given resume. For example, this...

# Generate all resume formats (HTML, PDF, DOC, TXT, etc.)
hackmyresume build me.json TO out/resume.all

..tells HackMyResume to read me.json and generate out/resume.md,
out/resume.doc, out/resume.html, out/resume.txt, out/resume.pdf, and
out/resume.json.

Building PDFs

Users who don't care about PDFs can turn off PDF generation across all themes
and formats with the --pdf none switch.

HackMyResume takes a unique approach to PDF generation. Instead of enforcing
a specific PDF engine on users, HackMyResume will attempt to work with whatever
PDF engine you have installed through the engine's command-line interface (CLI).
Currently that means any of...

..with support for other engines planned in the future. But for now, one or
more of these engines must be installed and accessible on your PATH in order
to generate PDF resumes with HackMyResume
. That means you should be able to
invoke either of these tools directly from your shell or terminal without error:

wkhtmltopdf input.html output.pdf
phantomjs script.js input.html output.pdf
weasyprint input.html output.pdf

Assuming you've installed one or both of these engines on your system, you can
tell HackMyResume which flavor of PDF generation to use via the --pdf option
(-p for short):

hackmyresume build resume.json TO out.all --pdf phantom
hackmyresume build resume.json TO out.all --pdf wkhtmltopdf
hackmyresume build resume.json TO out.all --pdf weasyprint
hackmyresume build resume.json TO out.all --pdf none

Analyzing

HackMyResume can analyze your resume for keywords, employment gaps, and other
metrics. Run:

hackmyresume analyze <my-resume>.json

Depending on the HackMyResume version, you should see output similar to:

*** HackMyResume v1.6.0 ***
Reading resume: resume.json
Analyzing FRESH resume: resume.json

SECTIONS (10):

        employment:    12
         education:     2
           service:     1
            skills:     8
           writing:     1
       recognition:     0
            social:     4
         interests:     2
        references:     1
         languages:     2

COVERAGE (61.1%):

        Total Days:  6034
          Employed:  3688
              Gaps:     8  [31, 1065, 273, 153, 671, 61, 61, 31]
          Overlaps:     1  [243]

KEYWORDS (61):

           Node.js:     6 mentions
        JavaScript:     9 mentions
        SQL Server:     3 mentions
     Visual Studio:     6 mentions
           Web API:     1 mentions
   N-tier / 3-tier:     1 mentions
            HTML 5:     1 mentions
        JavaScript:     6 mentions
               CSS:     2 mentions
Sass / LESS / SCSS:     1 mentions
              LAMP:     3 mentions
              WISC:     1 mentions
              HTTP:    21 mentions
              JSON:     1 mentions
               XML:     2 mentions
              REST:     1 mentions
        WebSockets:     2 mentions
       Backbone.js:     3 mentions
        Angular.js:     1 mentions
           Node.js:     4 mentions
               NPM:     1 mentions
             Bower:     1 mentions
             Grunt:     2 mentions
              Gulp:     1 mentions
            jQuery:     2 mentions
         Bootstrap:     3 mentions
     Underscore.js:     1 mentions
         PhantomJS:     1 mentions
      CoffeeScript:     1 mentions
            Python:    11 mentions
              Perl:     4 mentions
               PHP:     7 mentions
             MySQL:    12 mentions
        PostgreSQL:     4 mentions
             NoSQL:     2 mentions
            Apache:     2 mentions
               AWS:     2 mentions
               EC2:     2 mentions
               RDS:     3 mentions
                S3:     1 mentions
             Azure:     1 mentions
         Rackspace:     1 mentions
               C++:    23 mentions
            C++ 11:     1 mentions
             Boost:     1 mentions
             Xcode:     2 mentions
               gcc:     1 mentions
             OO&AD:     1 mentions
              .NET:    20 mentions
           Unity 5:     2 mentions
              Mono:     3 mentions
       MonoDevelop:     1 mentions
           Xamarin:     1 mentions
             TOTAL:   180 mentions

Validating

HackMyResume can also validate your resumes against either the FRESH /
FRESCA
or JSON Resume formats. To validate one or more existing
resumes, use the validate command:

# Validate myresume.json against either the FRESH or JSON Resume schema.
hackmyresume validate resumeA.json resumeB.json

HackMyResume will validate each specified resume in turn:

*** HackMyResume v1.6.0 ***
Validating JSON resume: resumeA.json (INVALID)
Validating JSON resume: resumeB.json (VALID)

Converting

HackMyResume can convert between the FRESH and JSON Resume
formats. Just run:

hackmyresume convert <INPUTS> <OUTPUTS>

where is one or more resumes in FRESH or JSON Resume format, and
is a corresponding list of output file names. HackMyResume will
autodetect the format (FRESH or JRS) of each input resume and convert it to the
other format (JRS or FRESH).

File-based Options

You can pass options into HackMyResume via an external options or ".hackmyrc"
file with the --options or -o switch:

hackmyresume build resume.json -o path/to/options.json

The options file can contain any documented HackMyResume option, including
theme, silent, debug, pdf, css, and other settings.

{
  "theme": "compact",

  "sectionTitles": {
    "employment": "Work"
  },

  "wkhtmltopdf": {
    "margin-top": "20mm"
  }
}

If an option is specified on both the command line and in an external options
file, the command-line option wins.

# path/to/options.json specifes the POSITIVE theme
# -t parameter specifies the COMPACT theme
# The -t parameter wins.
hackmyresume build resume.json -o path/to/options.json -t compact
> Reading resume: resume.json
> Applying COMPACT theme (7 formats)

Prettifying

HackMyResume applies js-beautify-style HTML prettification by default to
HTML-formatted resumes. To disable prettification, the --no-prettify or -n
flag can be used:

hackmyresume build resume.json out.all --no-prettify

Silent Mode

Use -s or --silent to run in silent mode:

hackmyresume build resume.json -o someFile.all -s
hackmyresume build resume.json -o someFile.all --silent

Debug Mode

Use -d or --debug to force HMR to emit a call stack when errors occur. In
the future, this option will emit detailed error logging.

hackmyresume build resume.json -d
hackmyresume analyze resume.json --debug

Disable Encoding

Use the --no-escape option to disable encoding in Handlebars themes. Note:
this option has no effect for non-Handlebars themes.

hackmyresume build resume.json --no-escape

Private Resume Fields

Have a gig, education stint, membership, or other relevant history that you'd
like to hide from most (e.g. public) resumes but sometimes show on others? Tag it with
"private": true to omit it from outbound generated resumes by default.

"employment": {
  "history": [
    {
      "employer": "Acme Real Estate"
    },
    {
      "employer": "Area 51 Alien Research Laboratory",
      "private": true
    },
    {
      "employer": "H&R Block"
    }
  ]
}

Then, when you want a copy of your resume that includes the private gig / stint
/ etc., tell HackMyResume that it's OK to emit private fields. The way you do
that is with the --private switch.

hackmyresume build resume.json private-resume.all --private

Custom theme helpers

You can attach your own custom Handlebars helpers to a FRESH theme with the
helpers key of your theme's theme.json file.

{
  "title": "my-cool-theme",

  // ...

  "helpers": [
    "../path/to/helpers/*.js",
    "some-other-helper.js"
  ]
}

HackMyResume will attempt to load each path or glob and register any specified
files with Handlebars.registerHelper, making them available to your
theme.

Contributing

HackMyResume is a community-driven free and open source project under the MIT
License. Contributions are encouraged and we respond to all PRs and issues in
time. See CONTRIBUTING.md for details.

License

MIT. Go crazy. See LICENSE.md for details.