| Crates.io | unreact |
| lib.rs | unreact |
| version | 0.7.0 |
| created_at | 2022-11-07 01:01:37.132326+00 |
| updated_at | 2023-06-30 01:35:39.312315+00 |
| description | A static site generation framework for Rust using Handlebars and Scss. |
| homepage | |
| repository | https://github.com/darccyy/unreact |
| max_upload_size | |
| id | 706870 |
| size | 85,206 |
A static site generation framework for Rust using Handlebars and Scss.
Submit issue here
For a quick start, check out Unreact Template
Add the latest version to your Cargo.toml dependencies
unreact = "*"
"dev" featureFeatures:
unreact/dev - Creates local dev server to host files.unreact/watch - Superset of unreact/dev. Also listens for file changes and reloads server.Run with --dev or -d arguments, for unreact::is_dev() function to return true. Only works if unreact/dev or unreact/watch features are enabled.
# Run with `watch` feature, and dev mode
cargo run --features unreact/watch -- --dev
# Run without `watch` (for a production server)
cargo run
With the "watch" feature enabled, the dev server will watch for changes in asset folders (templates, styles, and public; Can be changed with config).
The client will reload if a change was detected.
NOTE: This will NOT reload the client if Rust files (in
src) were changed! (See below)
This will watch file in src, and reload the program. The client should automatically try to reconnect.
cargo watch -x "run --features unreact/watch -- --dev" -w src -w Cargo.toml
Create an site with a single index page
use unreact::prelude::*;
fn main() -> Result<(), Error> {
// Create the app
// Using default config, not in dev mode, and an example url
let mut app = Unreact::new(Config::default(), false, "https://example.com")?;
// Create an index route
// This uses the template 'page.hbs' in 'templates/'
// A json object with a value for 'foo' is passed into the template
app.index("page", object! { foo: "World!" })?;
// Compile it!
app.run()
}
use unreact::prelude::*;
#[test]
fn large_example() -> Result<(), Error> {
// Custom config
let config = Config {
strict: true,
..Config::default()
};
// Run with `is_dev`
let mut app = Unreact::new(config, is_dev(), "https://example.com")?;
// Set the global variable 'smiley'
app.globalize(object! {
smiley: "(^_^)"
});
// Create some routes
// Note that these methods will never return an error in dev mode. The error will be handled on `app.run()`
app.index("page", object! {message: "World!"})?
.not_found("404", object! {})?
.route_raw("hello", "this is my hello page".to_string())
.route("article", "other/article", object! {})?;
// Compiles normally, or opens a dev server and listens if in dev mode
app.run()
}
In .github/workflows/build.yaml:
name: Build
on:
# Triggers the workflow on push or pull request events but only for the "main" branch
push:
branches: ["main"]
pull_request:
branches: ["main"]
jobs:
build:
runs-on: ubuntu-latest
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- name: Checkout 🛎️
uses: actions/checkout@v3
# Run compilation script with Rust
- name: Build 🔧
run: cargo run
# Push changes with plugin
- name: Deploy 🚀
uses: JamesIves/github-pages-deploy-action@v4
with:
# This must be the build directory
folder: ./build
![]()