1 | HackMyResume
|
2 | ===
|
3 |
|
4 | [![Latest release][img-release]][latest-release]
|
5 | [![Build status (MASTER)][img-master]][travis-url-master]
|
6 | [![Build status (DEV)][img-dev]][travis-url-dev]
|
7 | [![Join the chat at https://gitter.im/hacksalot/HackMyResume][badge]][gh]
|
8 |
|
9 | *Create polished résumés and CVs in multiple formats from your command line or
|
10 | shell. Author in clean Markdown and JSON, export to Word, HTML, PDF, LaTeX,
|
11 | plain text, and other arbitrary formats. Fight the power, save trees. Compatible
|
12 | with [FRESH][fresca] and [JRS][6] resumes.*
|
13 |
|
14 | ![](assets/hmr_build.png)
|
15 |
|
16 | HackMyResume is a dev-friendly, local-only Swiss Army knife for resumes and CVs.
|
17 | Use it to:
|
18 |
|
19 | 1. **Generate** HTML, Markdown, LaTeX, MS Word, PDF, plain text, JSON, XML,
|
20 | YAML, print, smoke signal, carrier pigeon, and other arbitrary-format resumes
|
21 | and CVs, from a single source of truth—without violating DRY.
|
22 | 2. **Analyze** your resume for keyword density, gaps/overlaps, and other
|
23 | metrics.
|
24 | 3. **Convert** resumes between [FRESH][fresca] and [JSON Resume][6] formats.
|
25 | 4. **Validate** resumes against either format.
|
26 |
|
27 | HackMyResume is built with Node.js and runs on recent versions of OS X, Linux,
|
28 | or Windows. View the [FAQ](FAQ.md).
|
29 |
|
30 | ![](assets/hmr_analyze.png)
|
31 |
|
32 | ## Features
|
33 |
|
34 | - OS X, Linux, and Windows.
|
35 | - Choose from dozens of FRESH or JSON Resume themes.
|
36 | - Private, local-only resume authoring and analysis.
|
37 | - Analyze your resume for keywords, gaps, and other metrics.
|
38 | - Store your resume data as a durable, versionable JSON or YAML document.
|
39 | - Generate polished resumes in multiple formats without violating [DRY][dry].
|
40 | - Output to HTML, Markdown, LaTeX, PDF, MS Word, JSON, YAML, plain text, or XML.
|
41 | - Validate resumes against the FRESH or JSON Resume schema.
|
42 | - Support for multiple input and output resumes.
|
43 | - Convert between FRESH and JSON Resume resumes.
|
44 | - Use from your command line or [desktop][7].
|
45 | - Free and open-source through the MIT license.
|
46 | - Updated daily / weekly. Contributions are [welcome](CONTRIBUTING.md).
|
47 |
|
48 | ## Install
|
49 |
|
50 | Install the latest stable version of HackMyResume with NPM:
|
51 |
|
52 | ```bash
|
53 | [sudo] npm install hackmyresume -g
|
54 | ```
|
55 |
|
56 | Alternately, install the latest bleeding-edge version (updated daily):
|
57 |
|
58 | ```bash
|
59 | [sudo] npm install hacksalot/hackmyresume#dev -g
|
60 | ```
|
61 |
|
62 | ## Installing PDF Support (optional)
|
63 |
|
64 | HackMyResume tries not to impose a specific PDF engine requirement on
|
65 | the user, but will instead work with whatever PDF engines you have installed.
|
66 |
|
67 | Currently, HackMyResume's PDF generation requires one of [Phantom.js][2],
|
68 | [wkhtmltopdf][3], or [WeasyPrint][11] to be installed on your system and the
|
69 | corresponding binary to be accessible on your PATH. This is an optional
|
70 | requirement for users who care about PDF formats. If you don't care about PDF
|
71 | formats, skip this step.
|
72 |
|
73 | ## Installing Themes
|
74 |
|
75 | HackMyResume supports both [FRESH][fresh-themes] and [JSON Resume][jrst]-style
|
76 | résumé themes.
|
77 |
|
78 | - FRESH themes currently come preinstalled with HackMyResume.
|
79 | - JSON Resume themes can be installed from NPM, GitHub, or manually.
|
80 |
|
81 | To install a JSON Resume theme, just `cd` to the folder where you want to store
|
82 | your themes and run one of:
|
83 |
|
84 | ```bash
|
85 | # Install with NPM
|
86 | npm install jsonresume-theme-[theme-name]
|
87 |
|
88 | # Install with GitHub
|
89 | git clone https://github.com/[user-or-org]/[repo-name]
|
90 | ```
|
91 |
|
92 | Then when you're ready to generate your resume, just reference the location of
|
93 | the theme folder as you installed it:
|
94 |
|
95 | ```bash
|
96 | hackmyresume build resume.json TO out/resume.all -t node_modules/jsonresume-theme-classy
|
97 | ```
|
98 |
|
99 | Note: You can use install themes anywhere on your file system. You don't need a
|
100 | package.json or other NPM/Node infrastructure.
|
101 |
|
102 | ## Getting Started
|
103 |
|
104 | To use HackMyResume you'll need to create a valid resume in either
|
105 | [FRESH][fresca] or [JSON Resume][6] format. Then you can start using the command
|
106 | line tool. There are five basic commands you should be aware of:
|
107 |
|
108 | - **build** generates resumes in HTML, Word, Markdown, PDF, and other formats.
|
109 | Use it when you need to submit, upload, print, or email resumes in specific
|
110 | formats.
|
111 |
|
112 | ```bash
|
113 | # hackmyresume build <INPUTS...> TO <OUTPUTS...> [-t THEME]
|
114 | hackmyresume build resume.json TO out/resume.all
|
115 | hackmyresume build r1.json r2.json TO out/rez.html out/rez.md foo/rez.all
|
116 | ```
|
117 |
|
118 | - **new** creates a new resume in FRESH or JSON Resume format.
|
119 |
|
120 | ```bash
|
121 | # hackmyresume new <OUTPUTS...> [-f <FORMAT>]
|
122 | hackmyresume new resume.json
|
123 | hackmyresume new resume.json -f fresh
|
124 | hackmyresume new r1.json r2.json -f jrs
|
125 | ```
|
126 |
|
127 | - **analyze** inspects your resume for keywords, duration, and other metrics.
|
128 |
|
129 | ```bash
|
130 | # hackmyresume analyze <INPUTS...>
|
131 | hackmyresume analyze resume.json
|
132 | hackmyresume analyze r1.json r2.json
|
133 | ```
|
134 |
|
135 | - **convert** converts your source resume between FRESH and JSON Resume
|
136 | formats. Use it to convert between the two formats to take advantage of tools
|
137 | and services.
|
138 |
|
139 | ```bash
|
140 | # hackmyresume convert <INPUTS...> TO <OUTPUTS...>
|
141 | hackmyresume convert resume.json TO resume-jrs.json
|
142 | hackmyresume convert 1.json 2.json 3.json TO out/1.json out/2.json out/3.json
|
143 | ```
|
144 |
|
145 | - **validate** validates the specified resume against either the FRESH or JSON
|
146 | Resume schema. Use it to make sure your resume data is sufficient and complete.
|
147 |
|
148 | ```bash
|
149 | # hackmyresume validate <INPUTS...>
|
150 | hackmyresume validate resume.json
|
151 | hackmyresume validate r1.json r2.json r3.json
|
152 | ```
|
153 |
|
154 | - **peek** echoes your resume or any field, property, or object path on your
|
155 | resume to standard output.
|
156 |
|
157 | ```bash
|
158 | # hackmyresume peek <INPUTS...> [OBJECT-PATH]
|
159 | hackmyresume peek rez.json # Echo the whole resume
|
160 | hackmyresume peek rez.json info.brief # Echo the "info.brief" field
|
161 | hackmyresume peek rez.json employment.history[1] # Echo the 1st job
|
162 | hackmyresume peek rez.json rez2.json info.brief # Compare value
|
163 | ```
|
164 |
|
165 | ## Supported Output Formats
|
166 |
|
167 | HackMyResume supports these output formats:
|
168 |
|
169 | Output Format | Ext | Notes
|
170 | ------------- | --- | -----
|
171 | HTML | .html | A standard HTML 5 + CSS resume format that can be viewed in a browser, deployed to a website, etc.
|
172 | Markdown | .md | A structured Markdown document that can be used as-is or used to generate HTML.
|
173 | LaTeX | .tex | A structured LaTeX document (or collection of documents) that can be processed with pdflatex, xelatex, and similar tools.
|
174 | MS Word | .doc | A Microsoft Word office document (XML-driven; WordProcessingML).
|
175 | Adobe Acrobat (PDF) | .pdf | A binary PDF document driven by an HTML theme (through wkhtmltopdf).
|
176 | plain text | .txt | A formatted plain text document appropriate for emails or copy-paste.
|
177 | JSON | .json | A JSON representation of the resume.
|
178 | YAML | .yml | A YAML representation of the resume.
|
179 | RTF | .rtf | Forthcoming.
|
180 | Textile | .textile | Forthcoming.
|
181 | image | .png, .bmp | Forthcoming.
|
182 |
|
183 | ## Use
|
184 |
|
185 | Assuming you've got a JSON-formatted resume handy, generating resumes in
|
186 | different formats and combinations is easy. Just run:
|
187 |
|
188 | ```bash
|
189 | hackmyresume build <inputs> to <outputs> [-t theme].
|
190 | ```
|
191 |
|
192 | Where `<INPUTS>` is one or more .json resume files, separated by spaces;
|
193 | `<OUTPUTS>` is one or more destination resumes, and `<THEME>` is the desired
|
194 | theme (default to Modern). For example:
|
195 |
|
196 | ```bash
|
197 | # Generate all resume formats (HTML, PDF, DOC, TXT, YML, etc.)
|
198 | hackmyresume build resume.json TO out/resume.all -t modern
|
199 |
|
200 | # Generate a specific resume format
|
201 | hackmyresume build resume.json TO out/resume.html
|
202 | hackmyresume build resume.json TO out/resume.pdf
|
203 | hackmyresume build resume.json TO out/resume.md
|
204 | hackmyresume build resume.json TO out/resume.doc
|
205 | hackmyresume build resume.json TO out/resume.json
|
206 | hackmyresume build resume.json TO out/resume.txt
|
207 | hackmyresume build resume.json TO out/resume.yml
|
208 |
|
209 | # Specify 2 inputs and 3 outputs
|
210 | hackmyresume build in1.json in2.json TO out.html out.doc out.pdf
|
211 | ```
|
212 |
|
213 | You should see something to the effect of:
|
214 |
|
215 | ```
|
216 | *** HackMyResume v1.4.0 ***
|
217 | Reading JSON resume: foo/resume.json
|
218 | Applying MODERN Theme (7 formats)
|
219 | Generating HTML resume: out/resume.html
|
220 | Generating TXT resume: out/resume.txt
|
221 | Generating DOC resume: out/resume.doc
|
222 | Generating PDF resume: out/resume.pdf
|
223 | Generating JSON resume: out/resume.json
|
224 | Generating MARKDOWN resume: out/resume.md
|
225 | Generating YAML resume: out/resume.yml
|
226 | ```
|
227 |
|
228 | ## Advanced
|
229 |
|
230 | ### Applying a theme
|
231 |
|
232 | HackMyResume can work with any FRESH or JSON Resume theme (the latter must be
|
233 | installed first). To specify a theme when generating your resume, use the `-t`
|
234 | or `--theme` parameter:
|
235 |
|
236 | ```bash
|
237 | hackmyresume build resume.json TO out/rez.all -t [theme]
|
238 | ```
|
239 |
|
240 | The `[theme]` parameter can be the name of a predefined theme OR the path to any
|
241 | FRESH or JSON Resume theme folder:
|
242 |
|
243 | ```bash
|
244 | hackmyresume build resume.json TO out/rez.all -t modern
|
245 | hackmyresume build resume.json TO OUT.rez.all -t ../some-folder/my-custom-theme/
|
246 | hackmyresume build resume.json TO OUT.rez.all -t node_modules/jsonresume-theme-classy
|
247 | ```
|
248 |
|
249 | FRESH themes are currently pre-installed with HackMyResume. JSON Resume themes
|
250 | can be installed prior to use:
|
251 |
|
252 | ```bash
|
253 | # Install a JSON Resume theme into a local node_modules subfolder:
|
254 | npm install jsonresume-theme-[name]
|
255 | # Use it with HackMyResume
|
256 | hackmyresume build resume.json -t node_modules/jsonresume-theme-[name]
|
257 | ```
|
258 |
|
259 | As of v1.6.0, available predefined FRESH themes are `positive`, `modern`,
|
260 | `compact`, `minimist`, and `hello-world`. For a list of JSON Resume themes,
|
261 | check the [NPM Registry](https://www.npmjs.com/search?q=jsonresume-theme).
|
262 |
|
263 | ### Merging resumes
|
264 |
|
265 | You can **merge multiple resumes together** by specifying them in order from
|
266 | most generic to most specific:
|
267 |
|
268 | ```bash
|
269 | # Merge specific.json onto base.json and generate all formats
|
270 | hackmyresume build base.json specific.json TO resume.all
|
271 | ```
|
272 |
|
273 | This can be useful for overriding a base (generic) resume with information from
|
274 | a specific (targeted) resume. For example, you might override your generic
|
275 | catch-all "software developer" resume with specific details from your targeted
|
276 | "game developer" resume, or combine two partial resumes into a "complete"
|
277 | resume. Merging follows conventional [extend()][9]-style behavior and there's
|
278 | no arbitrary limit to how many resumes you can merge:
|
279 |
|
280 | ```bash
|
281 | hackmyresume build in1.json in2.json in3.json in4.json TO out.html out.doc
|
282 | Reading JSON resume: in1.json
|
283 | Reading JSON resume: in2.json
|
284 | Reading JSON resume: in3.json
|
285 | Reading JSON resume: in4.json
|
286 | Merging in4.json onto in3.json onto in2.json onto in1.json
|
287 | Generating HTML resume: out.html
|
288 | Generating WORD resume: out.doc
|
289 | ```
|
290 |
|
291 | ### Multiple targets
|
292 |
|
293 | You can specify **multiple output targets** and HackMyResume will build them:
|
294 |
|
295 | ```bash
|
296 | # Generate out1.doc, out1.pdf, and foo.txt from me.json.
|
297 | hackmyresume build me.json TO out1.doc out1.pdf foo.txt
|
298 | ```
|
299 |
|
300 | ### Using .all
|
301 |
|
302 | The special `.all` extension tells HackMyResume to generate all supported output
|
303 | formats for the given resume. For example, this...
|
304 |
|
305 | ```bash
|
306 | # Generate all resume formats (HTML, PDF, DOC, TXT, etc.)
|
307 | hackmyresume build me.json TO out/resume.all
|
308 | ```
|
309 |
|
310 | ..tells HackMyResume to read `me.json` and generate `out/resume.md`,
|
311 | `out/resume.doc`, `out/resume.html`, `out/resume.txt`, `out/resume.pdf`, and
|
312 | `out/resume.json`.
|
313 |
|
314 | ### Building PDFs
|
315 |
|
316 | *Users who don't care about PDFs can turn off PDF generation across all themes
|
317 | and formats with the `--pdf none` switch.*
|
318 |
|
319 | HackMyResume takes a unique approach to PDF generation. Instead of enforcing
|
320 | a specific PDF engine on users, HackMyResume will attempt to work with whatever
|
321 | PDF engine you have installed through the engine's command-line interface (CLI).
|
322 | Currently that means any of...
|
323 |
|
324 | - [wkhtmltopdf][3]
|
325 | - [Phantom.js][2]
|
326 | - [WeasyPrint][11]
|
327 |
|
328 | ..with support for other engines planned in the future. But for now, **one or
|
329 | more of these engines must be installed and accessible on your PATH in order
|
330 | to generate PDF resumes with HackMyResume**. That means you should be able to
|
331 | invoke either of these tools directly from your shell or terminal without error:
|
332 |
|
333 | ```bash
|
334 | wkhtmltopdf input.html output.pdf
|
335 | phantomjs script.js input.html output.pdf
|
336 | weasyprint input.html output.pdf
|
337 | ```
|
338 |
|
339 | Assuming you've installed one or both of these engines on your system, you can
|
340 | tell HackMyResume which flavor of PDF generation to use via the `--pdf` option
|
341 | (`-p` for short):
|
342 |
|
343 | ```bash
|
344 | hackmyresume build resume.json TO out.all --pdf phantom
|
345 | hackmyresume build resume.json TO out.all --pdf wkhtmltopdf
|
346 | hackmyresume build resume.json TO out.all --pdf weasyprint
|
347 | hackmyresume build resume.json TO out.all --pdf none
|
348 | ```
|
349 |
|
350 | ### Analyzing
|
351 |
|
352 | HackMyResume can analyze your resume for keywords, employment gaps, and other
|
353 | metrics. Run:
|
354 |
|
355 | ```bash
|
356 | hackmyresume analyze <my-resume>.json
|
357 | ```
|
358 |
|
359 | Depending on the HackMyResume version, you should see output similar to:
|
360 |
|
361 |
|
362 | ```
|
363 | *** HackMyResume v1.6.0 ***
|
364 | Reading resume: resume.json
|
365 | Analyzing FRESH resume: resume.json
|
366 |
|
367 | SECTIONS (10):
|
368 |
|
369 | employment: 12
|
370 | education: 2
|
371 | service: 1
|
372 | skills: 8
|
373 | writing: 1
|
374 | recognition: 0
|
375 | social: 4
|
376 | interests: 2
|
377 | references: 1
|
378 | languages: 2
|
379 |
|
380 | COVERAGE (61.1%):
|
381 |
|
382 | Total Days: 6034
|
383 | Employed: 3688
|
384 | Gaps: 8 [31, 1065, 273, 153, 671, 61, 61, 31]
|
385 | Overlaps: 1 [243]
|
386 |
|
387 | KEYWORDS (61):
|
388 |
|
389 | Node.js: 6 mentions
|
390 | JavaScript: 9 mentions
|
391 | SQL Server: 3 mentions
|
392 | Visual Studio: 6 mentions
|
393 | Web API: 1 mentions
|
394 | N-tier / 3-tier: 1 mentions
|
395 | HTML 5: 1 mentions
|
396 | JavaScript: 6 mentions
|
397 | CSS: 2 mentions
|
398 | Sass / LESS / SCSS: 1 mentions
|
399 | LAMP: 3 mentions
|
400 | WISC: 1 mentions
|
401 | HTTP: 21 mentions
|
402 | JSON: 1 mentions
|
403 | XML: 2 mentions
|
404 | REST: 1 mentions
|
405 | WebSockets: 2 mentions
|
406 | Backbone.js: 3 mentions
|
407 | Angular.js: 1 mentions
|
408 | Node.js: 4 mentions
|
409 | NPM: 1 mentions
|
410 | Bower: 1 mentions
|
411 | Grunt: 2 mentions
|
412 | Gulp: 1 mentions
|
413 | jQuery: 2 mentions
|
414 | Bootstrap: 3 mentions
|
415 | Underscore.js: 1 mentions
|
416 | PhantomJS: 1 mentions
|
417 | CoffeeScript: 1 mentions
|
418 | Python: 11 mentions
|
419 | Perl: 4 mentions
|
420 | PHP: 7 mentions
|
421 | MySQL: 12 mentions
|
422 | PostgreSQL: 4 mentions
|
423 | NoSQL: 2 mentions
|
424 | Apache: 2 mentions
|
425 | AWS: 2 mentions
|
426 | EC2: 2 mentions
|
427 | RDS: 3 mentions
|
428 | S3: 1 mentions
|
429 | Azure: 1 mentions
|
430 | Rackspace: 1 mentions
|
431 | C++: 23 mentions
|
432 | C++ 11: 1 mentions
|
433 | Boost: 1 mentions
|
434 | Xcode: 2 mentions
|
435 | gcc: 1 mentions
|
436 | OO&AD: 1 mentions
|
437 | .NET: 20 mentions
|
438 | Unity 5: 2 mentions
|
439 | Mono: 3 mentions
|
440 | MonoDevelop: 1 mentions
|
441 | Xamarin: 1 mentions
|
442 | TOTAL: 180 mentions
|
443 | ```
|
444 |
|
445 | ### Validating
|
446 |
|
447 | HackMyResume can also validate your resumes against either the [FRESH /
|
448 | FRESCA][fresca] or [JSON Resume][6] formats. To validate one or more existing
|
449 | resumes, use the `validate` command:
|
450 |
|
451 | ```bash
|
452 | # Validate myresume.json against either the FRESH or JSON Resume schema.
|
453 | hackmyresume validate resumeA.json resumeB.json
|
454 | ```
|
455 |
|
456 | HackMyResume will validate each specified resume in turn:
|
457 |
|
458 | ```bash
|
459 | *** HackMyResume v1.6.0 ***
|
460 | Validating JSON resume: resumeA.json (INVALID)
|
461 | Validating JSON resume: resumeB.json (VALID)
|
462 | ```
|
463 |
|
464 | ### Converting
|
465 |
|
466 | HackMyResume can convert between the [FRESH][fresca] and [JSON Resume][6]
|
467 | formats. Just run:
|
468 |
|
469 | ```bash
|
470 | hackmyresume convert <INPUTS> <OUTPUTS>
|
471 | ```
|
472 |
|
473 | where <INPUTS> is one or more resumes in FRESH or JSON Resume format, and
|
474 | <OUTPUTS> is a corresponding list of output file names. HackMyResume will
|
475 | autodetect the format (FRESH or JRS) of each input resume and convert it to the
|
476 | other format (JRS or FRESH).
|
477 |
|
478 | ### File-based Options
|
479 |
|
480 | You can pass options into HackMyResume via an external options or ".hackmyrc"
|
481 | file with the `--options` or `-o` switch:
|
482 |
|
483 | ```bash
|
484 | hackmyresume build resume.json -o path/to/options.json
|
485 | ```
|
486 |
|
487 | The options file can contain any documented HackMyResume option, including
|
488 | `theme`, `silent`, `debug`, `pdf`, `css`, and other settings.
|
489 |
|
490 | ```json
|
491 | {
|
492 | "theme": "compact",
|
493 |
|
494 | "sectionTitles": {
|
495 | "employment": "Work"
|
496 | },
|
497 |
|
498 | "wkhtmltopdf": {
|
499 | "margin-top": "20mm"
|
500 | }
|
501 | }
|
502 | ```
|
503 |
|
504 | If an option is specified on both the command line and in an external options
|
505 | file, the command-line option wins.
|
506 |
|
507 | ```bash
|
508 | # path/to/options.json specifes the POSITIVE theme
|
509 | # -t parameter specifies the COMPACT theme
|
510 | # The -t parameter wins.
|
511 | hackmyresume build resume.json -o path/to/options.json -t compact
|
512 | > Reading resume: resume.json
|
513 | > Applying COMPACT theme (7 formats)
|
514 | ```
|
515 |
|
516 | ### Prettifying
|
517 |
|
518 | HackMyResume applies [js-beautify][10]-style HTML prettification by default to
|
519 | HTML-formatted resumes. To disable prettification, the `--no-prettify` or `-n`
|
520 | flag can be used:
|
521 |
|
522 | ```bash
|
523 | hackmyresume build resume.json out.all --no-prettify
|
524 | ```
|
525 |
|
526 | ### Silent Mode
|
527 |
|
528 | Use `-s` or `--silent` to run in silent mode:
|
529 |
|
530 | ```bash
|
531 | hackmyresume build resume.json -o someFile.all -s
|
532 | hackmyresume build resume.json -o someFile.all --silent
|
533 | ```
|
534 |
|
535 | ### Debug Mode
|
536 |
|
537 | Use `-d` or `--debug` to force HMR to emit a call stack when errors occur. In
|
538 | the future, this option will emit detailed error logging.
|
539 |
|
540 | ```bash
|
541 | hackmyresume build resume.json -d
|
542 | hackmyresume analyze resume.json --debug
|
543 | ```
|
544 |
|
545 | ### Disable Encoding
|
546 |
|
547 | Use the `--no-escape` option to disable encoding in Handlebars themes. Note:
|
548 | this option has no effect for non-Handlebars themes.
|
549 |
|
550 | ```bash
|
551 | hackmyresume build resume.json --no-escape
|
552 | ```
|
553 |
|
554 | ### Private Resume Fields
|
555 |
|
556 | Have a gig, education stint, membership, or other relevant history that you'd
|
557 | like to hide from *most* (e.g. public) resumes but sometimes show on others? Tag it with
|
558 | `"private": true` to omit it from outbound generated resumes by default.
|
559 |
|
560 |
|
561 | ```json
|
562 | "employment": {
|
563 | "history": [
|
564 | {
|
565 | "employer": "Acme Real Estate"
|
566 | },
|
567 | {
|
568 | "employer": "Area 51 Alien Research Laboratory",
|
569 | "private": true
|
570 | },
|
571 | {
|
572 | "employer": "H&R Block"
|
573 | }
|
574 | ]
|
575 | }
|
576 | ```
|
577 |
|
578 | Then, when you want a copy of your resume that includes the private gig / stint
|
579 | / etc., tell HackMyResume that it's OK to emit private fields. The way you do
|
580 | that is with the `--private` switch.
|
581 |
|
582 | ```bash
|
583 | hackmyresume build resume.json private-resume.all --private
|
584 | ```
|
585 |
|
586 |
|
587 | ### Custom theme helpers
|
588 |
|
589 | You can attach your own custom Handlebars helpers to a FRESH theme with the
|
590 | `helpers` key of your theme's `theme.json` file.
|
591 |
|
592 | ```js
|
593 | {
|
594 | "title": "my-cool-theme",
|
595 |
|
596 | // ...
|
597 |
|
598 | "helpers": [
|
599 | "../path/to/helpers/*.js",
|
600 | "some-other-helper.js"
|
601 | ]
|
602 | }
|
603 | ```
|
604 |
|
605 | HackMyResume will attempt to load each path or glob and register any specified
|
606 | files with [Handlebars.registerHelper][hrh], making them available to your
|
607 | theme.
|
608 |
|
609 |
|
610 | ## Contributing
|
611 |
|
612 | HackMyResume is a community-driven free and open source project under the MIT
|
613 | License. Contributions are encouraged and we respond to all PRs and issues in
|
614 | time. See [CONTRIBUTING.md][contribute] for details.
|
615 |
|
616 | ## License
|
617 |
|
618 | MIT. Go crazy. See [LICENSE.md][1] for details.
|
619 |
|
620 | [1]: LICENSE.md
|
621 | [2]: http://phantomjs.org/
|
622 | [3]: http://wkhtmltopdf.org/
|
623 | [4]: https://nodejs.org/
|
624 | [5]: https://www.npmjs.com/
|
625 | [6]: http://jsonresume.org
|
626 | [7]: http://fluentcv.com
|
627 | [8]: https://youtu.be/N9wsjroVlu8
|
628 | [9]: https://api.jquery.com/jquery.extend/
|
629 | [10]: https://github.com/beautify-web/js-beautify
|
630 | [11]: http://weasyprint.org/
|
631 | [fresh]: https://github.com/fluentdesk/FRESH
|
632 | [fresca]: https://github.com/fresh-standard/fresh-resume-schema
|
633 | [dry]: https://en.wikipedia.org/wiki/Don%27t_repeat_yourself
|
634 | [img-release]: https://img.shields.io/github/release/hacksalot/HackMyResume.svg?label=version
|
635 | [img-master]: https://img.shields.io/travis/hacksalot/HackMyResume/master.svg
|
636 | [img-dev]: https://img.shields.io/travis/hacksalot/HackMyResume/dev.svg?label=dev
|
637 | [travis-url-master]: https://travis-ci.org/hacksalot/HackMyResume?branch=master
|
638 | [travis-url-dev]: https://travis-ci.org/hacksalot/HackMyResume?branch=dev
|
639 | [latest-release]: https://github.com/hacksalot/HackMyResume/releases/latest
|
640 | [contribute]: CONTRIBUTING.md
|
641 | [fresh-themes]: https://github.com/fluentdesk/fresh-themes
|
642 | [jrst]: https://www.npmjs.com/search?q=jsonresume-theme
|
643 | [gh]: https://gitter.im/hacksalot/HackMyResume?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
|
644 | [badge]: https://badges.gitter.im/hacksalot/HackMyResume.svg
|
645 | [hrh]: http://handlebarsjs.com/reference.html#base-registerHelper
|