You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Vincent Prouillet dd10f5d75a
Update README.md
5 years ago
ci Rename all occurrences of gutenberg to zola in code 5 years ago
completions Rebuild completions 5 years ago
components Fix reload with taxonomies 5 years ago
docs Extract zola version to a variable 5 years ago
src Update deps + fmt 5 years ago
sublime_syntaxes Update syntaxes 5 years ago
sublime_themes Add ayu highlighting theme 5 years ago
test_site Fix reload with taxonomies 5 years ago
.editorconfig Create new project 7 years ago
.gitignore Add snacraft config 5 years ago
.gitmodules Point to https submodule instead of git 5 years ago
.travis.yml Update tokens and badges 5 years ago
CHANGELOG.md Set release date 5 years ago
Cargo.lock Min Rust version updated to 1.29 5 years ago
Cargo.toml Rename all occurrences of gutenberg to zola in code 5 years ago
EXAMPLES.md Update EXAMPLES.md 5 years ago
LICENSE USe date range for license 6 years ago
README.md Update README.md 5 years ago
appveyor.yml Update tokens and badges 5 years ago
build.rs rustfmt 5 years ago
netlify.toml Add custom data output to the comparison 5 years ago
rustfmt.toml rustfmt 5 years ago
snapcraft.yaml Update snapcraft.yaml 5 years ago

README.md

zola (né Gutenberg)

Build Status Build status

A fast static site generator in a single binary with everything built-in.

Documentation is available on its site or in the docs/content folder of the repository and the community can use its forum.

Comparisons with other static site generators

Zola Cobalt Hugo Pelican
Single binary
Language Rust Rust Go Python
Syntax highlighting
Sass compilation
Assets co-location
i18n
Image processing
Sane & powerful template engine ~ ~
Themes
Shortcodes
Internal links
Link checker
Table of contents
Automatic header anchors
Aliases
Pagination
Custom taxonomies
Search
Data files
LiveReload
Netlify support ~
Breadcrumbs
Custom ouput formats ?

Supported content formats

  • Zola: markdown
  • Cobalt: markdown
  • Hugo: markdown, asciidoc, org-mode
  • Pelican: reStructuredText, markdown, asciidoc, org-mode, whatever-you-want

Template engine explanation

Cobalt gets ~ as, while based on Liquid, the Rust library doesn't implement all its features but there is no documentation on what is and isn't implemented. The errors are also cryptic. Liquid itself is not powerful enough to do some of things you can do in Jinja2, Go templates or Tera.

Hugo gets ~. It is probably the most powerful template engine in the list after Jinja2 (hard to beat python code in templates) but personally drives me insane, to the point of writing my own template engine and static site generator. Yes, this is a bit biased.

Pelican notes

Many features of Pelican are coming from plugins, which might be tricky to use because of version mismatch or lacking documentation. Netlify supports Python and Pipenv but you still need to install your dependencies manually.

Contributing

As the documentation site is automatically built on commits to master, all development should happen on the next branch, unless it is fixing the current documentation.

If you want a feature added or modified, please open an issue to discuss it before doing a PR.

Adding syntax highlighting languages and themes

Adding a syntax

Syntax highlighting depends on submodules so ensure you load them first:

$ git submodule update --init

Zola only works with syntaxes in the .sublime-syntax format. If your syntax is in .tmLanguage format, open it in Sublime Text and convert it to sublime-syntax by clicking on Tools > Developer > New Syntax from ... and put it at the root of sublime_syntaxes.

You can also add a submodule to the repository of the wanted syntax:

$ cd sublime_syntaxes
$ git submodule add https://github.com/elm-community/SublimeElmLanguageSupport

Note that you can also only copy manually the updated syntax definition file but this means Zola won't be able to automatically update it.

You can check for any updates to the current packages by running:

$ git submodule update --remote --merge

And finally from the root of the components/config crate run the following command:

$ cargo run --example generate_sublime synpack ../../sublime_syntaxes ../../sublime_syntaxes/newlines.packdump

Adding a theme

A gallery containing lots of themes is located at https://tmtheme-editor.herokuapp.com/#!/editor/theme/Agola%20Dark. More themes can be easily added to Zola, just make a PR with the wanted theme added in the sublime_themes directory and run the following command from the root of the components/config:

$ cargo run --example generate_sublime themepack ../../sublime_themes ../../sublime_themes/all.themedump

You should see the list of themes being added.