UNPKG

10 kBMarkdownView Raw
1HackMyResume
2============
3*Create polished résumés and CVs in multiple formats from your command line or
4shell. Author in clean Markdown and JSON, export to Word, HTML, PDF, LaTeX,
5plain text, and other arbitrary formats. Fight the power, save trees. Compatible
6with [FRESH][fresca] and [JRS][6] resumes.*
7
8![](assets/resume-bouqet.png)
9
10HackMyResume is a dev-friendly, local-only Swiss Army knife for resumes and CVs.
11Use it to:
12
131. **Generate** HTML, Markdown, LaTeX, MS Word, PDF, plain text, JSON, XML,
14YAML, print, smoke signal, carrier pigeon, and other arbitrary-format resumes
15and CVs, from a single source of truth—without violating DRY.
162. **Convert** resumes between [FRESH][fresca] and [JSON Resume][6] formats.
173. **Validate** resumes against either format.
18
19HackMyResume is built with Node.js and runs on recent versions of OS X, Linux,
20or Windows.
21
22## Features
23
24- OS X, Linux, and Windows.
25- Store your resume data as a durable, versionable JSON or YAML document.
26- Generate polished resumes in multiple formats without violating [DRY][dry].
27- Output to HTML, Markdown, LaTeX, PDF, MS Word, JSON, YAML, plain text, or XML.
28- Validate resumes against the FRESH or JSON Resume schema.
29- Support for multiple input and output resumes.
30- Use from your command line or [desktop][7].
31- Free and open-source through the MIT license.
32
33## Install
34
35Install HackMyResume with NPM:
36
37```bash
38[sudo] npm install hackmyresume -g
39```
40
41Note: for PDF generation you'll need to install a copy of [wkhtmltopdf][3] for
42your platform. For LaTeX generation you'll need a valid LaTeX environment with
43access to `xelatex` and similar.
44
45## Getting Started
46
47To use HackMyResume you'll need to create a valid resume in either
48[FRESH][fresca] or [JSON Resume][6] format. Then you can start using the command
49line tool. There are four basic commands you should be aware of:
50
51- **build** generates resumes in HTML, Word, Markdown, PDF, and other formats.
52Use it when you need to submit, upload, print, or email resumes in specific
53formats.
54
55 ```bash
56 # hackmyresume BUILD <INPUTS> TO <OUTPUTS> [-t THEME]
57 hackmyresume BUILD resume.json TO out/resume.all
58 hackmyresume BUILD r1.json r2.json TO out/rez.html out/rez.md foo/rez.all
59 ```
60
61- **new** creates a new resume in FRESH or JSON Resume format.
62
63 ```bash
64 # hackmyresume NEW <OUTPUTS> [-f <FORMAT>]
65 hackmyresume NEW resume.json
66 hackmyresume NEW resume.json -f fresh
67 hackmyresume NEW r1.json r2.json -f jrs
68 ```
69
70- **convert** converts your source resume between FRESH and JSON Resume
71formats.
72Use it to convert between the two formats to take advantage of tools and
73services.
74
75 ```bash
76 # hackmyresume CONVERT <INPUTS> TO <OUTPUTS>
77 hackmyresume CONVERT resume.json TO resume-jrs.json
78 hackmyresume CONVERT 1.json 2.json 3.json TO out/1.json out/2.json out/3.json
79 ```
80
81- **validate** validates the specified resume against either the FRESH or JSON
82Resume schema. Use it to make sure your resume data is sufficient and complete.
83
84 ```bash
85 # hackmyresume VALIDATE <INPUTS>
86 hackmyresume VALIDATE resume.json
87 hackmyresume VALIDATE r1.json r2.json r3.json
88 ```
89
90## Supported Output Formats
91
92HackMyResume supports these output formats:
93
94Output Format | Ext | Notes
95------------- | --- | -----
96HTML | .html | A standard HTML 5 + CSS resume format that can be viewed in a browser, deployed to a website, etc.
97Markdown | .md | A structured Markdown document that can be used as-is or used to generate HTML.
98LaTeX | .tex | A structured LaTeX document (or collection of documents).
99MS Word | .doc | A Microsoft Word office document.
100Adobe Acrobat (PDF) | .pdf | A binary PDF document driven by an HTML theme.
101plain text | .txt | A formatted plain text document appropriate for emails or copy-paste.
102JSON | .json | A JSON representation of the resume.
103YAML | .yml | A YAML representation of the resume.
104RTF | .rtf | Forthcoming.
105Textile | .textile | Forthcoming.
106image | .png, .bmp | Forthcoming.
107
108## Install
109
110HackMyResume requires a recent version of [Node.js][4] and [NPM][5]. Then:
111
1121. Install the latest official [wkhtmltopdf][3] binary for your platform.
1132. Optionally install an updated LaTeX environment (LaTeX resumes only).
1142. Install **HackMyResume** with `[sudo] npm install hackmyresume -g`.
1153. You're ready to go.
116
117## Use
118
119Assuming you've got a JSON-formatted resume handy, generating resumes in
120different formats and combinations easy. Just run:
121
122```bash
123hackmyresume BUILD <INPUTS> <OUTPUTS> [-t theme].
124```
125
126Where `<INPUTS>` is one or more .json resume files, separated by spaces;
127`<OUTPUTS>` is one or more destination resumes, and `<THEME>` is the desired
128theme (default to Modern). For example:
129
130```bash
131# Generate all resume formats (HTML, PDF, DOC, TXT, YML, etc.)
132hackmyresume build resume.json -o out/resume.all -t modern
133
134# Generate a specific resume format
135hackmyresume build resume.json TO out/resume.html
136hackmyresume build resume.json TO out/resume.pdf
137hackmyresume build resume.json TO out/resume.md
138hackmyresume build resume.json TO out/resume.doc
139hackmyresume build resume.json TO out/resume.json
140hackmyresume build resume.json TO out/resume.txt
141hackmyresume build resume.json TO out/resume.yml
142
143# Specify 2 inputs and 3 outputs
144hackmyresume build in1.json in2.json TO out.html out.doc out.pdf
145```
146
147You should see something to the effect of:
148
149```
150*** HackMyResume v0.9.0 ***
151Reading JSON resume: foo/resume.json
152Applying MODERN Theme (7 formats)
153Generating HTML resume: out/resume.html
154Generating TXT resume: out/resume.txt
155Generating DOC resume: out/resume.doc
156Generating PDF resume: out/resume.pdf
157Generating JSON resume: out/resume.json
158Generating MARKDOWN resume: out/resume.md
159Generating YAML resume: out/resume.yml
160```
161
162## Advanced
163
164### Applying a theme
165
166You can specify a predefined or custom theme via the optional `-t` parameter.
167For a predefined theme, include the theme name. For a custom theme, include the
168path to the custom theme's folder.
169
170```bash
171hackmyresume build resume.json -t modern
172hackmyresume build resume.json -t ~/foo/bar/my-custom-theme/
173```
174
175As of v1.0.0, available predefined themes are `positive`, `modern`, `compact`,
176`minimist`, and `hello-world`.
177
178### Merging resumes
179
180You can **merge multiple resumes together** by specifying them in order from
181most generic to most specific:
182
183```bash
184# Merge specific.json onto base.json and generate all formats
185hackmyresume build base.json specific.json -o resume.all
186```
187
188This can be useful for overriding a base (generic) resume with information from
189a specific (targeted) resume. For example, you might override your generic
190catch-all "software developer" resume with specific details from your targeted
191"game developer" resume, or combine two partial resumes into a "complete"
192resume. Merging follows conventional [extend()][9]-style behavior and there's
193no arbitrary limit to how many resumes you can merge:
194
195```bash
196hackmyresume build in1.json in2.json in3.json in4.json TO out.html out.doc
197Reading JSON resume: in1.json
198Reading JSON resume: in2.json
199Reading JSON resume: in3.json
200Reading JSON resume: in4.json
201Merging in4.json onto in3.json onto in2.json onto in1.json
202Generating HTML resume: out.html
203Generating WORD resume: out.doc
204```
205
206### Multiple targets
207
208You can specify **multiple output targets** and HackMyResume will build them:
209
210```bash
211# Generate out1.doc, out1.pdf, and foo.txt from me.json.
212hackmyresume build me.json -o out1.doc -o out1.pdf -o foo.txt
213```
214
215You can also omit the output file(s) and/or theme completely:
216
217```bash
218# Equivalent to "hackmyresume resume.json resume.all -t modern"
219hackmyresume build resume.json
220```
221
222### Using .all
223
224The special `.all` extension tells HackMyResume to generate all supported output
225formats for the given resume. For example, this...
226
227```bash
228# Generate all resume formats (HTML, PDF, DOC, TXT, etc.)
229hackmyresume build me.json -o out/resume.all
230```
231
232..tells HackMyResume to read `me.json` and generate `out/resume.md`,
233`out/resume.doc`, `out/resume.html`, `out/resume.txt`, `out/resume.pdf`, and
234`out/resume.json`.
235
236### Validating
237
238HackMyResume can also validate your resumes against either the [FRESH /
239FRESCA][fresca] or [JSON Resume][6] formats. To validate one or more existing
240resumes, use the `validate` command:
241
242```bash
243# Validate myresume.json against either the FRESH or JSON Resume schema.
244hackmyresume validate resumeA.json resumeB.json
245```
246
247HackMyResume will validate each specified resume in turn:
248
249```bash
250*** HackMyResume v0.9.0 ***
251Validating JSON resume: resumeA.json (INVALID)
252Validating JSON resume: resumeB.json (VALID)
253```
254
255### Converting
256
257HackMyResume can convert between the [FRESH][fresca] and [JSON Resume][6]
258formats. Just run:
259
260```bash
261hackmyresume CONVERT <INPUTS> <OUTPUTS>
262```
263
264where <INPUTS> is one or more resumes in FRESH or JSON Resume format, and
265<OUTPUTS> is a corresponding list of output file names. HackMyResume will
266autodetect the format (FRESH or JRS) of each input resume and convert it to the
267other format (JRS or FRESH).
268
269### Prettifying
270
271HackMyResume applies [js-beautify][10]-style HTML prettification by default to
272HTML-formatted resumes. To disable prettification, the `--nopretty` or `-n` flag
273can be used:
274
275```bash
276hackmyresume generate resume.json out.all --nopretty
277```
278
279### Silent Mode
280
281Use `-s` or `--silent` to run in silent mode:
282
283```bash
284hackmyresume generate resume.json -o someFile.all -s
285hackmyresume generate resume.json -o someFile.all --silent
286```
287
288## License
289
290MIT. Go crazy. See [LICENSE.md][1] for details.
291
292[1]: LICENSE.md
293[2]: http://phantomjs.org/
294[3]: http://wkhtmltopdf.org/
295[4]: https://nodejs.org/
296[5]: https://www.npmjs.com/
297[6]: http://jsonresume.org
298[7]: http://fluentcv.com
299[8]: https://youtu.be/N9wsjroVlu8
300[9]: https://api.jquery.com/jquery.extend/
301[10]: https://github.com/beautify-web/js-beautify
302[fresh]: https://github.com/fluentdesk/FRESH
303[fresca]: https://github.com/fluentdesk/FRESCA
304[dry]: https://en.wikipedia.org/wiki/Don%27t_repeat_yourself