rockyourcode: Create a Blazingly Fast Static Site With Zola
Hello 👋! Thanks for subscribing.
Last week I created a static site with Rust.
Create a Blazingly Fast Static Site With Zola
Published on: 2021-08-08
tags: Rust
Every programming language needs its static site generator. Rust has 3 main contenders, one of them is Zola.
I wanted to try out a Rust static site generator, so let's walk through getting started with Zola.
Installation
Zola offers several ways of installing, even a Dockerfile.
For MacOs, you can use Brew:
brew install zola
For Arch Linux (yay!):
pacman -S zola
That was pretty painless.
Getting started
The docs are very straight-forward. If I want to make a blog, I can follow the outlined steps.
zola init myblog
Now you'll need to answer a few questions that are self-explanatory.
Zola offers the option to add search functionality to your blog! That's something that I'm missing from Hugo.
The Getting Started Guide now goes on to explain how to create templates and a folder structure.
The templating language looks like dozen others — which is a good thing!
But we want to add a theme and deploy the blog to Netlify, so let's try that.
Install a Theme
I want to put my blog on a free Netlify domain via GitHub.
Let's initialize a new Git repository:
cd zolablog
git init
(You may need to configure your username and email address, if you haven't done so before.)
Although the documentation does not spell it out, I'll add a theme as a Git submodule.
Submodules is, in most cases, your best choice. You can easily pull in updated theme(s) when needed.
The feather theme looks pretty nice.
git submodule add https://github.com/piedoom/feather themes/feather
(If you want to update a git submodule, run git submodule update --rebase --remote
.)
Now, we need to edit the config.toml
to add the theme. Add this line:
theme = "feather"
Start the zola development server:
zola serve
You'll see your blog on https://localhost:1111
.
Adding Blog Posts
Luckily, the theme works out of the box (that wasn't the case with all themes).
I'll add a new blog post with some dummy text. For that to work, I need to add a new markdown file into the content
folder.
We need to add some necessary frontmatter in .toml
format:
Example post (content/first-post.md
):
+++
title = "My First Blog Post"
date = 2021-08-08
+++
Bla bla bla
That works!
Deploy to Netlify
We'll want to put that wonder of a blog on Netlify. Everyone should be able to see it!
I'll use GitHub for source control and deployment.
Follow the instructions to add a new remote.
We also need a .gitignore
file which will ignore the public
folder. The public
folder is where the finished (built) blog will live, we don't need it in source control.
echo "public" > .gitignore
Then we'll add our work to the Git staging area and push it to GitHub:
git add -A
git commit -m "Initial commit"
git push origin main
Zola has a section in the documentation that deals with Netlify.
We'll need a netlify.toml
file:
# You do need the `publish` and `command` variables.
[build]
publish = "public"
command = "zola build"
[build.environment]
# Set the version name that you want to use and Netlify will automatically use it.
ZOLA_VERSION = "0.14.0"
# The magic for deploying previews of branches.
# We need to override the base url with whatever url Netlify assigns to our
# preview site. We do this using the Netlify environment variable
# `$DEPLOY_PRIME_URL`.
[context.deploy-preview]
command = "zola build --base-url $DEPLOY_PRIME_URL"
If you run zola build
locally, the tool will create a public
folder which contains the blog. That's why we are using publish = "public"
.
The Zola documentation does not explain how to setup Netlify and how to connect your GitHub repository to Netlify.
But we can follow the guide on the Hugo documentation which also comes with a few screenshots. Please ignore everything that's specific to Hugo.
When you use the Netlify webpage to import your GitHub repository, Netlify will automatically read the necessary settings from netlify.toml
. That means that you can keep to the default settings.
Here's the result of our walkthrough.
Thoughts
The documentation is pretty solid. If you've worked with static site generators before, the site explains what you need to know.
For total beginners, the documentation is too sparse. But newbies probably won't use Zola anyway as it's unlikely that a new programmer will learn Rust as a first language.
I like the sensible templating language and structure of a Zola project. Some of the extra features (link checker, search index) are neat.
All in all, I can see Zola as an alternative to Hugo.
Links
- Static Site Generators
- Jamstack List of Site Generators
- Top 3 Rust static site generators and when to use them
- Zola
- Feather theme for Zola
Thank you for reading my blog.