Expand description
Shokunin (職人) Static Site Generator
A Fast and Flexible open-source static site generator (ssg) written in Rust 🦀
Part of the Mini Functions family of libraries.
Overview 📖
Shokunin (職人) Static Site Generator is a highly-optimized, Rust-based static site generator (ssg) that aims to provide an easy-to-use and powerful tool for building professional static websites and blogs.
The library extracts metadata and content to generate static HTML files from Markdown, YAML, JSON, and TOML. It also supports HTML themes and custom templates to help you create high quality websites with ease.
Features ✨
Shokunin (職人) Static Site Generator feature highlights include:
- Blazing fast and flexible static site generator written in Rust 🦀
- Built-in support for GitHub Flavored Markdown (GFM).
- Built-in support for Google Analytics and Bing Analytics.
- Compatible with various HTML themes and Premium templates.
- Generates Atom and RSS feeds for your blog posts.
- Generates minified versions for optimal performance and SEO.
- Includes a built-in Rust development server for local development and testing.
- Supports multiple content formats, including Markdown, YAML, JSON, TOML, XML, etc.
- Built-in support for sitemap generation, robots.txt generation, canonical name (CNAME) records and custom 404 pages.
Usage 📖
Command Line Interface (CLI)
The Shokunin (職人) Static Site Generator library runs in a Terminal window and can be used to generate a static website.
Here’s the first command you can enter in your Terminal window to run Shokunin (職人) Static Site Generator:
ssg --new=mysite --content=content --template=template --output=output --serve=public
or
ssg -n=mysite -c=content -t=template -o=output -s=public
This command will create a new website with the name mysite in the current directory. It will use the content directory to gather the website content and the template directory to generate the website files. It will serve the website directly from the mysite directory.
Arguments
-n,--new: The name of the new website. (required)-c,--content: The directory containing the website content. (required)-t,--template: The directory containing the website templates. (required)-o,--output: The directory where the generated website files will be saved temporarily. (required)-s,--serve: Run the development server. (optional). The directory from which the website will be served.
In your project
To use the Shokunin (職人) Static Site Generator library in your project, add the following to your Cargo.toml file:
[dependencies]
shokunin = "0.0.14"
Add the following to your main.rs file:
use ssg::compiler::compile;
use std::path::Path;
fn main() -> Result<(), Box<dyn std::error::Error>> {
// Define the paths to the build, site, source and template directories.
// let build_path = Path::new("examples/example.com/build");
// let site_path = Path::new("examples/example.com/public");
// let content_path = Path::new("examples/example.com/contents");
// let template_path = Path::new("examples/example.com/templates");
// compile(build_path, content_path, site_path, template_path)?;
Ok(())
}then you can use the Shokunin (職人) Static Site Generator functions in your application code.
Examples
To get started with Shokunin (職人) Static Site Generator, you can use the examples provided in the examples directory of the project.
To run the examples, clone the repository and run the following command in your terminal from the project root directory.
cargo run --example example
The command will generate a static website based on the configuration details in the examples directory.
use ssg::compiler::compile;
use std::path::Path;
fn main() -> Result<(), Box<dyn std::error::Error>> {
// Define the paths to the build, site, source and template directories.
let build_path = Path::new("examples/example.com/build");
let site_path = Path::new("examples/example.com/public");
let content_path = Path::new("examples/example.com/contents");
let template_path = Path::new("examples/example.com/templates");
compile(build_path, content_path, site_path, template_path)?;
Ok(())
}
The main() function in this code compiles a website from the content directory, using the template directory to generate the website files. The compiled website is saved in the build directory and served directly from the example.com directory.
Args
build_path:The path to the directory where the compiled website will be saved.content_path:The path to the directory containing the website content.site_path:The path to the directory where the generated website files will be served from.template_path:The path to the directory containing the website templates.
Return value
The main() function returns a Result. If the compilation is successful, the Result will be Ok(()). If there is an error, the Result will be Err(e), where e is a Box<dyn std::error::Error>.
License 📜
The project is licensed under the terms of both the MIT license and the Apache License (Version 2.0).
Modules
- The
climodule contains functions for the command-line interface. - The
compilermodule contains functions for the compilation process. - The
optionsmodule contains the structs - The
filemodule handles file reading and writing operations. - The
frontmattermodule extracts the front matter from files. - The
htmlmodule generates the HTML content. - The
jsonmodule generates the JSON content. - The
macrosmodule contains functions for generating macros. - The
metatagsmodule generates the meta tags. - The
navigationmodule generates the navigation menu. - The
parsermodule contains functions for parsing command-line arguments and options. - The
rssmodule generates the RSS content. - The
servemodule contains functions for the development server. - The
templatemodule renders the HTML content using the pre-defined template. - The
directoryfunction ensures that a directory exists.
Macros
macro_check_directoryMacromacro_cleanup_directoriesMacromacro_create_directoriesMacromacro_generate_metatagsMacromacro_get_argsMacromacro_metadata_optionMacromacro_render_layoutMacromacro_serveMacrowrite_elementmacro
Functions
- Function:
run- Runs the static site generator command-line tool.