Blades

Blazing fast dead simple static site generator
Alternatives To Blades
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Nextra8,70273a day ago166July 13, 2023219mitTypeScript
Simple, powerful and flexible site generation framework with everything you love from Next.js.
Expose4,259
2 years ago23mitPerl
A simple static site generator for photoessays
Pagic1,58712155 days ago8April 03, 201710mitJavaScript
A static site generator powered by Deno + React
Verless308
a month ago42April 12, 202123apache-2.0Go
A Static Site Generator designed for Markdown-based content with a focus on simplicity and performance.
Blades293
2 months ago13December 11, 20223gpl-3.0Rust
Blazing fast dead simple static site generator
Kiko174
5 years agoCSS
:apple: Kiko, a Jekyll Theme
Haroopress163
9 years ago115JavaScript
A static site generator built with Node.js, "Haroo" means "a day" Support Markdown presentation, Syntax Highlight, Themes
Live Composer Page Builder155
7 months ago57gpl-3.0PHP
Free page builder plugin for WordPress https://livecomposerplugin.com
Styx154
8 months ago16mitNix
Static site generator in Nix expression language.
Jekylldecent127
a year ago9mitJavaScript
Blog Template for Jekyll
Alternatives To Blades
Select To Compare


Alternative Project Comparisons
Readme
Blades logo

Blades

Crates.io status Docs

blazing fast
 dead simple
  static site generator

User manual

Blades is made to do one job and do it well - generate HTML files from the provided content using the provided templates.
Thanks to zero-copy deserialization and the Ramhorns templating engine, it renders the whole site in milliseconds, possibly more than 20 times faster than other generators like Hugo.

It's made for easy setup and use. A static site generator should be a no brainer. It uses mustache templates with extremely minimal and obvious syntax (like 7 rules!), providing the necessary building blocks to let you focus on your content.

Features

  • Powerful plugin system
  • Themes
  • Image gallery generation
  • CommonMark markdown with tables and footnotes for content
  • Automatic syntax highlighting using cmark-syntax (with a possibility of turning LaTeX formulas into MathML)
  • Customizable taxonomies (like categories or tags)
  • Pagination
  • Breadcrumbs
  • Asset colocation
  • Table of contents with access to all of the site data
  • Automatic sitemap, Atom and RSS feed generation

Why not blades?

Unlike other monolithic generators, Blades is modest in scope. All it does is to generate a site. It doesn't do any fancy stuff like transpiling Haskell to minified Javascript, or ever watching the site for changes. For that, you can use a dedicated tool like caretaker.

Nevertheless, if you have a feature request or ran into some issue using Blades, please submit an issue. Any contribution is welcome! :)

Why blades?

They shave the mustache off.

Installing

With the Rust toolchain installed, you can install Blades from crates.io

cargo install blades

Or from its repository

git clone https://github.com/grego/blades
cd blades
cargo install --path .

macOS

Using the package manager Homebrew

brew install blades

Using the package manager MacPorts

sudo port install blades

Running

Then, you can run the executable blades with the following subcommands:

  • init: Initialize the site in the current directory, creating the basic files and folders
  • build: Build the site according to config, content, templates and themes in the current directory
  • colocate: Move the assets from the "assets" directory and from the theme, if one is used, into the output directory
  • all: Build the site and colocate the assets
  • lazy: Build the site and (colocate assets only if the theme was switched) [default]
  • new: Create a new page

Plugins

There are 4 types of plugins that can be used with Blades.

  • input - they put a JSON-serialised list of pages on the standard output, can be used to get pages from different sources
  • output - they receive a JSON-serialised list of pages on the standard input and can be used to generate further page data, such as processing images
  • transform - they receive a JSON-serialised list of pages on the standard output and output another such list on the standard output, can transform anything on the pages
  • content - they receive a markdown content of one page on standard input and output markdown on the standard output; they are enabled on per-page basis and can be used e.g. to render LaTeX formulas or highlight syntax

Any code in any language can be used, as only using the standard input and output is assumed. For Rust, Blades also provides a library for automatic serialisation and deserialisation pages.

Example

Example plugin configuration can be found in examples, as well as an example toy transform plugin. To try it, first downolad the Casper theme as a submodule

git submodule update --init

Then build the plugin:

cargo build --release transform_plugin

Then run Blades in the examples directory:

cargo run --release

For more on plugins, check their documentation and existing plugins

Themes

When you specify a theme in the config, templates and assets from the theme are used. Every site that doesn't use a theme can be used as a theme for another site. Therefore, the easiest way to use a theme is to just clone the corresponding theme's repository into the themes directory. A list of available themes can be found here.

To overwrite the theme, simply use the files in the templates, resp. assets subdirectories of the page root directory.

Assets

All the files from the assets directory (and from the theme) are moved into the directory specified in the config, which is emptied before. This is a subdirectory of the output directory (defaults to assets).

Blades takes of the pages it rendered before and if some of them is deleted, the corresponding files in the output directory will be deleted, too. The other files in the output directory are left intact. This way, you can place anything in the output directory and (as long as its name differs from all the page names and it's not in the assets subdirectory), Blades won't touch it.

Meta

Blades renders sitemap (into sitemap.xml), Atom (into atom.xml) and RSS (into rss.xml) feeds, unless explicitly disabled in the config.

Using Blades as a library

Main components of Blades are also exported as a library. They are parser agnostic, so they can be used to generate a website using any format that implements serde::Deserialize. Currently, Cargo doesn't support binary-only dependencies. As such, these dependencies are behind the bin feature gate, which is enabled by default. When using Blades as a library, they are not necessary, so it is recommended to import blades with default_features = false.

Contribution

If you found a bug or would like to see some feature in Blades, you are the most welcome to submit an issue or a pull request! Likewise if you found something in this documentation not clear or imprecise.

License

Blades is free software, and is released under the terms of the GNU General Public License version 3. See LICENSE.

Popular Site Generator Projects
Popular Theme Projects
Popular Content Management Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Rust
Theme
Blade
Mustache
Site Generator