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.yml
How 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/yamlresume
image, 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.yml
Basically, 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/yamlresume
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 node
For Chocolatey users:
choco install nodejs.install
For Ubuntu 24.10 or newer:
sudo apt install nodejs
For 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 nodejs
YAMLResume CLI
Installing yamlresume
is a breeze. You can install it using your favourite
Node.js package manager:
npm install -g yamlresume
pnpm add -g yamlresume
yarn global add yamlresume
bun add -g yamlresume
Verify 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 <source> build a resume to LaTeX and PDF
languages i18n and l10n support
templates manage resume templates
help [command] display help for command
If you just want to give yamlresume
a try without installing it, you can use
npx
, pnpx
or other similar tools:
npx yamlresume help
yarn dlx yamlresume help
pnpx yamlresume help
bun exec yamlresume help
Typesetting 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 mactex
MiKTeX 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-full
Otherwise, you can install the minimum required packages:
sudo apt install texlive-xetex texlive-fonts-extra texlive-lang-all
For 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-full
Otherwise you can install the minimum required packages:
sudo dnf install \
texlive-scheme-medium \
texlive-moderncv \
texlive-ctex \
texlive-academicons
Alternatively, 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 frameworks
Tectonic
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 tectonic
In 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-libertine
Otherwise 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-linuxlibertine
For RHEL-based linux like Fedora, AlmaLinux, Rocky Linux, you can install the Linux Libertine font by:
sudo dnf install linux-libertine-fonts
Google 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-cjk
Download Noto fonts and follow the official guide to install on Windows.
For Ubuntu users:
sudo apt install fonts-noto-cjk fonts-noto-cjk-extra
For 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-fonts
Troubleshooting
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.