mdubourg001 / Ssgo
Programming Languages
Labels
Projects that are alternatives of or similar to Ssgo
ssgo
The minimalistic but flexible static site generator.
ssgo
is built with Deno and relies on it.
Documentation
Read the documentation at https://ssgo.netlify.app/docs.
Quickstart
To install ssgo
using Deno:
deno install --unstable --allow-read --allow-write --allow-net --allow-run -q https://deno.land/x/ssgo/ssgo.ts
To create a ssgo
project just run:
mkdir my-ssgo-project && cd my-ssgo-project
ssgo init
Here's what a ssgo
project looks like:
βββ creators/ <- here go the scripts creating your pages
βββ templates/ <- here go the templates of your pages
βββ components/ <- here go your custom components
βββ static/ <- here go your static files
To launch a build: just run:
ssgo
Your site will be built inside of the dist/
directory.
To start development mode with file watching, and a hot reloaded dev server:
ssgo dev
The dist/
directory will be served over http://localhost:5580
.
Overview
ssgo
basically relies on two types of files: templates, and creators.
Templates are the skeleton of your pages and are simply HTML files living inside the templates/
directory (and its subdirectories):
<!-- templates/my-template.html -->
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>{{ title }}</title>
<link rel="stylesheet" href="index.css" />
</head>
<body>
<h1>Hello, ssgo !</h1>
<p>Just run <code>ssgo dev</code> to get started !</p>
</body>
</html>
Creators are like page factories. Using a buildPage
function given by ssgo
, they use templates and datas to build pages. Creators live in the creators/
directory (and its subdirectories):
// creators/my-creator.ts
import type { BuildPage } from "https://deno.land/x/ssgo/mod.ts"
import { fetchTitle } from "../src/api.ts"
export default async function (buildPage: BuildPage) {
const title = await fetchTitle()
buildPage(
"my-template.html" // template to use to build the page,
{ title: title } // data to use to build the page,
{ filename: "index.html", dir: "" } // build options
)
}
ssgo
also provides much more cool stuffs like components, automatic static files management, or just-in-time page build in dev mode. You can learn more about all this things by reading the documentation.
Roadmap
- [ ] Pass undefined if variable doesn't exist when passing props
- [ ] Use CWD's
.tsconfig.json
for typescript compilation if exists - [ ] Add a support for a config file (.ssgorc, ssgo.config.js)
- [ ] Provide a way to opt out of static ressources resolution on a per-file basis