Expand description
ยงShokunin Static Site Generator (SSG)
A content-first static site generator crafted in Rust, optimized for performance, accessibility, and search engine visibility.
โข Website โข Documentation โข Report Bug โข Request Feature โข Contributing Guidelines
ยงOverview ๐
Shokunin is a high-performance static site generator (SSG) engineered in Rust that prioritises:
- Content-first development approach
- Lightning-fast site generation
- WCAG 2.1 Level AA accessibility compliance
- Advanced SEO optimization
- Type-safe operations with comprehensive error handling
ยงKey Features ๐ฏ
ยงCore Capabilities
- โก Exceptional Performance: Zero-cost abstractions through Rust
- ๐ฑ SEO Optimization: Built-in enhancements for search visibility
- โฟ Accessibility: Automatic WCAG 2.1 Level AA compliance
- ๐ ๏ธ Multi-format Support: Handles Markdown, YAML, JSON, and TOML
- ๐ Feed Generation: Automatic Atom and RSS feed creation
- ๐ Analytics: Native Google and Bing Analytics integration
- ๐จ Theming: Custom HTML themes and template support
ยงDevelopment Features
- ๐ง CLI Tools: Comprehensive command-line interface
- ๐ Dev Server: Built-in Rust server for local development
- ๐ Hot Reload: Automatic content updates during development
- ๐ Type Safety: Guaranteed memory and thread safety
- โก Async Support: Full asynchronous operation capabilities
ยงGetting Started ๐ฆ
ยงInstallation
Add to your Cargo.toml
:
[dependencies]
ssg = "0.0.32"
Or install via Cargo:
cargo install ssg
ยงBasic Usage
use staticdatagen::compiler::service::compile;
use std::{path::Path, error::Error};
fn main() -> Result<(), Box<dyn Error>> {
// Define directory paths
let build_dir = Path::new("./examples/build"); // Build directory
let content_dir = Path::new("./examples/content"); // Content directory
let public_dir = Path::new("./examples/public"); // Public directory
let template_dir = Path::new("./examples/templates"); // Templates
// Generate site
compile(build_dir, content_dir, public_dir, template_dir)?;
println!("โจ Site generated successfully!");
Ok(())
}
ยงCLI Usage
Create a new site:
# Full command syntax
ssg --content=content --template=templates --serve=public
# Short form
ssg -c=content -t=templates -o=output -s=public
# Using cargo run
cargo run --bin ssg -- -c="./examples/content" -t="./examples/templates" -s="./examples/public"
ยงCLI Options
Option | Short | Description | Required |
---|---|---|---|
--content | -c | Content path | Yes |
--template | -t | Template path | Yes |
--serve | -s | Server Public path | Yes |
ยงExamples ๐
Try our example implementations:
# Basic example
## Convert Markdown to static sites effortlessly, with templates, organized builds, and instant local hosting.
git clone https://github.com/sebastienrousseau/shokunin.git
cd shokunin
cargo run --example basic
# Quick start example
## Create, compile, and host a static site effortlessly with Shokunin: simple setup, error handling, and instant local server for previews.
cargo run --example quickstart
# Multilingual example
## Build multilingual static sites effortlessly: generate language-specific sites, create a language selector, and serve all from a single directory.
cargo run --example multilingual
ยงDocumentation ๐
ยงContributing ๐ค
We welcome contributions! Please see our Contributing Guidelines for details on:
- Code of Conduct
- Development Process
- Pull Request Guidelines
- Issue Reporting
ยงLicense ๐
This project is dual-licensed under:
at your option.
ยงAcknowledgements ๐
Special thanks to all contributors who have helped build Shokunin.
Re-exportsยง
pub use staticdatagen;
Modulesยง
Structsยง
- Paths
- Represents the necessary directory paths for the site generator.
- Paths
Builder - Builder for creating Paths configurations
Functionsยง
- collect_
files_ recursive - Recursively collects all file paths within a directory.
- copy_
dir_ all - Recursively copies a directory whilst maintaining structure and attributes.
- copy_
dir_ all_ async - Asynchronously copies an entire directory structure, preserving file attributes and handling nested directories.
- copy_
dir_ with_ progress - Recursively copies directories with a progress bar for feedback.
- create_
directories - Creates and verifies required directories for site generation.
- create_
log_ file - Creates and initialises a log file for the static site generator.
- handle_
server - Configures and launches the development server.
- is_
safe_ path - Checks if a given path is safe to use.
- log_
arguments - Logs processed command-line arguments for debugging and auditing.
- log_
initialization - Records system initialisation in the logging system.
- run
- Executes the static site generation process.
- verify_
and_ copy_ files - Validates and copies files from source to destination.
- verify_
and_ copy_ files_ async - Asynchronously validates and copies files between directories.
- verify_
file_ safety - Verifies the safety of a file for processing.