Installation
YAMLResume is a Node.js tool, under the hood, it transform your resumes from the YAML format to LaTeX code and then call a LaTeX typesetting engine to compile the generated LaTeX code to PDF. Besides, to get optimal PDF output, we also suggest to install some fonts. In a nutshell, you need to install the followings to get started with YAMLResume:
- Node.js
- yamlresume package
- a typesetting engine
- [optional] some fonts
This sounds a bit complicated, but don't worry, we have your back.
Docker Users
If you are a docker user, you are in luck, we have a docker image for you. This image has everything pre-packaged, including:
You can create a new resume instantly with the following command:
docker run --rm -v $(pwd):/home/yamlresume yamlresume/yamlresume new my-resume.ymlHow does this Docker magic work?
This command will create a new resume called my-resume.yml in your current
directory. Steps:
docker run ... yamlresume/yamlresume- runs a new container from theyamlresume/yamlresumeimage, if this image is not existed in your local machine, it will pull it from the Docker Hub.--rm- automatically removes the container when it exits-v $(pwd):/home/yamlresume- mounts the current directory ($(pwd)) into the container at/home/yamlresume, allowing the container to access local filesnew my-resume.yml- run yamlresume CLI new sub-command to create a new resume with the filenamemy-resume.yml
Edit my-resume.yml accordingly and then build the resume from yaml to pdf:
docker run --rm -v $(pwd):/home/yamlresume yamlresume/yamlresume build my-resume.ymlBasically, you can call all of the yamlresume CLI sub-commands in this
way—just append the sub-command after yamlresume/yamlresume and then follow
the corresponding usage guide.
The -v flag here is quite important here because it mounts the current
directory ($(pwd)) into the container at /home/yamlresume, allowing a two
way file sync between the local directory and the container.
Github Mirror
If you have trouble to pull down yamlresume/yamlresume image from Docker
Hub, don't worry, we have a
github mirror
for you.
You can get the ghcr image by:
docker pull ghcr.io/yamlresume/yamlresumePermission Issues
Sometimes you may run into permission
issues when running the
Docker container because the yamlresume/yamlresume image is built with a USER yamlresume instruction, which by default runs with less privilege.
There are two ways to solve this issue:
- Use your host username/group ID to run the container:
docker run --rm -v $(pwd):/home/yamlresume -u $(id -u):$(id -g) yamlresume/yamlresume new my-resume.ymlThis is the recommended way to run the container. As long as your host user has access to the current directory, you can run the container with your host username/group ID.
- Use
-u rootto run the container with root access:
docker run --rm -v $(pwd):/home/yamlresume -u root yamlresume/yamlresume new my-resume.ymlThis is the least recommended way to run the container. It is not recommended because it may cause security issues, so you should only do this if you are sure about what you are doing.
Last but not least, if you are running the yamlresume Docker container in GitHub
Actions, then root access may be required as per GitHub's
documentation:
Note: GitHub Actions must be run by the default Docker user (root). Ensure your Dockerfile does not set the USER instruction, otherwise you will not be able to access GITHUB_WORKSPACE.
Ref: Understanding the Docker USER Instruction
Non-Docker Users
If you are not a docker user, please follow the appropriate instructions below to install yamlresume CLI and all the necessary dependencies based on your operating system. At the time of writing, our guide covers macOS, Windows, and some Linux distros (Ubuntu and and RHEL based distros).
Node.js
Node.js 20.x or newer is required.
Why Node.js 20.x or newer?
Theoretically yamlresume should work with Node.js 18, however it is highly
recommended to use Node.js 20 or newer because Node.js 18 LTS is scheduled to
reach End-of-Life on 30 April
2025.
There may be like 100+ methods to install Node.js on different OS, you can check the official Node.js Download to get started.
We recommend using a package manager to install Node.js.
For Homebrew users:
brew install nodeFor Chocolatey users:
choco install nodejs.installFor Ubuntu 24.10 or newer:
sudo apt install nodejsFor Ubuntu 24.04 or older, please take a look at NodeSource to get Node.js 20 or newer.
For RHEL-based linux like Fedora, AlmaLinux, Rocky Linux, etc.:
sudo dnf install nodejsYAMLResume CLI
Installing yamlresume is a breeze. You can install it using your favourite
Node.js package manager:
npm install -g yamlresumepnpm add -g yamlresumeyarn global add yamlresumebun add -g yamlresumeVerify that yamlresume is installed successfully:
$ yamlresume help
Usage: yamlresume [options] [command]
YAMLResume — Resume as Code in YAML
__ __ _ __ __ _ ____
\ \ / // \ | \/ | | | _ \ ___ ___ _ _ ___ ___ ___
\ V // _ \ | |\/| | | | |_) / _ \/ __| | | / _ \/ _ \ / _ \
| |/ ___ \| | | | |___| _ < __/\__ \ |_| | | | | | | __/
|_/_/ \_\_| |_|_____|_| \_\___||___/\____|_| |_| |_|\___|
Options:
-V, --version output the version number
-v, --verbose verbose output
-h, --help display help for command
Commands:
new [filename] create a new resume
build [options] <resume-path> build a resume to LaTeX and PDF
dev [options] <resume-path> build a resume on file changes (watch mode)
languages i18n and l10n support
templates manage resume templates
validate <resume-path> validate a resume against the YAMLResume schema
help [command] display help for commandIf you just want to give yamlresume a try without installing it, you can use
npx, pnpx or other similar tools:
npx yamlresume helpyarn dlx yamlresume helppnpx yamlresume helpbun exec yamlresume helpTypesetting Engine
Under the hood, yamlresume does the job of a compiler, parsing a YAML resume
to an
AST
and then transforming the AST to LaTeX
code.
As a mini-compiler, yamlresume relies on a typesetting engine to compile the
generated LaTeX code to PDFs. Therefore you must first install a typesetting
engine first before you can use yamlresume to generate resume PDFs.
YAMLResume currently supports two typesetting engines: XeTeX and Tectonic.
Why LaTeX?
At the time of writing, LaTeX is still the best choice of typesetting engine for producing professional looking PDFs. Typst is a great alternative, but it is still in its early stage and its CJK support is not mature and production ready yet. Previously I wrote a post On Typesetting Engines explaining the reasons why I chose LaTeX over other typesetting engines when I founded PPResume.
XeTeX
XeTeX is a TeX typesetting engine using Unicode and supporting modern font technologies such as OpenType, Graphite and Apple Advanced Typography (AAT).
It is a very mature, stable typesetting engine that is widely used by many academic and scientific people.
The easiest way is to install the MacTeX distribution.
It includes XeTeX along with many other TeX-related programs and packages. You can download it from the MacTeX website or install it via homebrew:
brew install mactexMiKTeX distribution is a popular choice for Windows and includes XeTeX. You can download it from the MiKTeX website.
Alternatively, you can install TeX Live for Windows, which also includes XeTeX. Download it from the TeX Live website.
Most Linux distributions offer TeX Live through their package managers. XeTeX is
typically included in the texlive-xetex package or a larger texlive-full
meta-package.
For Ubuntu, if your network is good and you have around 10GB of disk spaces, you can install the full texlive distribution:
sudo apt install texlive-fullOtherwise, you can install the minimum required packages:
sudo apt install texlive-xetex texlive-fonts-extra texlive-lang-allFor RHEL-based linux like Fedora, AlmaLinux, Rocky Linux, you can install the full TeX Live distribution if you have enough disk space and good network:
sudo dnf install texlive-scheme-fullOtherwise you can install the minimum required packages:
sudo dnf install \
texlive-scheme-medium \
texlive-moderncv \
texlive-ctex \
texlive-academiconsAlternatively, you can always install TeX Live directly from the TeX Live website using their installer, which works across different Linux distributions.
Verify that XeTeX is installed successfully:
$ xetex -v
XeTeX 3.141592653-2.6-0.999994 (TeX Live 2022)
kpathsea version 6.3.4
Copyright 2022 SIL International, Jonathan Kew and Khaled Hosny.
There is NO warranty. Redistribution of this software is
covered by the terms of both the XeTeX copyright and
the Lesser GNU General Public License.
For more information about these matters, see the file
named COPYING and the XeTeX source.
Primary author of XeTeX: Jonathan Kew.
Compiled with ICU version 70.1; using 70.1
Compiled with zlib version 1.2.11; using 1.2.11
Compiled with FreeType2 version 2.11.1; using 2.11.1
Compiled with Graphite2 version 1.3.14; using 1.3.14
Compiled with HarfBuzz version 3.4.0; using 3.4.0
Compiled with libpng version 1.6.37; using 1.6.37
Compiled with pplib version v2.05 less toxic i hope
Using Mac OS X Core Text and Cocoa frameworksTectonic
Tectonic is a modernized, complete, self-contained TeX/LaTeX engine, powered by XeTeX and TeXLive.
A full TeX Live distribution typically takes up several GB of disk space, while tectonic's initial installation takes up only 10+ MB. It automatically downloads support files, so you don't have to install a complete LaTeX distribution. When you start using a new LaTeX package, Tectonic simply downloads the files it needs and continues processing.
Tectonic provides an official installation
guide, but this
would just put tectonic in the directory where you ran the installation command,
yamlresume needs a global tectonic command in your $PATH, so you need to
figure that out with some shell hacks on your own.
If you're a macOS user, you're in luck because Homebrew provides prebuilt package:
brew install tectonicIn to my experience, tectonic still has some minor compatibility issues with official XeTeX, so if you do not mind the long download tim eof a full TeX Live distribution, XeTeX is still the recommended choice here.
Font
Linux Libertine
YAMLResume adopts Linux Libertine as the default font for Latin characters. It is highly recommended to install it in order to get an optimal PDF output.
For Homebrew users:
brew install font-linux-libertineOtherwise you can download the latest version of Linux Libertine from the website and install the font with macOS's Font Book.
Download the latest version of Linux Libertine from the website and extract the archive and install the font.
For Ubuntu users, Linux Libertine font is already included in
texlive-fonts-extra package, however, if you want to install it manually, you
can do so by:
sudo apt install fonts-linuxlibertineFor RHEL-based linux like Fedora, AlmaLinux, Rocky Linux, you can install the Linux Libertine font by:
sudo dnf install linux-libertine-fontsGoogle Noto
If you need CJK resumes, you will also need to install Google Noto fonts for best unicode coverage.
For Homebrew users:
brew install font-noto-sans-cjk font-noto-serif-cjkDownload Noto fonts and follow the official guide to install on Windows.
For Ubuntu users:
sudo apt install fonts-noto-cjk fonts-noto-cjk-extraFor RHEL-based linux like Fedora, AlmaLinux, Rocky Linux, you can install the Noto fonts by:
sudo dnf install google-noto-sans-cjk-fonts google-noto-serif-cjk-fontsTroubleshooting
You can raise an issue if
you have trouble to install yamlresume or its dependencies.
You can enable verbose logging by passing a --verbose flag to yamlresume or
its subcommands.
Getting Tired?
If you are getting tired of the installation process, you can try PPResume, which is a hosted, commercial resume builder solution who open sourced YAMLResume.
Last updated on