57 lines
2.3 KiB
Markdown
57 lines
2.3 KiB
Markdown
# (S)ophie's (S)tatic (S)ite (G)enerator
|
|
|
|
Sophie's Static Site Generator (aka. SSSG) is a infnintely expandable SSG based on plugins. It ships with some plugins already included, such as:
|
|
1. A compile time JS runner `sssg/src/plugins/compile-time-js`
|
|
Example: `{& 1+3 &}` will give you `4` in the generated code
|
|
2. Development plugin `sssg/src/plugins/dev`
|
|
Creates a websocket server for instant updates and a HTTP server for serving up data at (by default) `localhost:8080`.
|
|
3. Image optimizations `sssg/src/plugins/image-optimization`
|
|
Optimizes all of your images sometimes losslessly. Uses the `sharp` NPM module to re-encode all image files.
|
|
4. Markdown compiler `sssg/src/plugins/markdown-compiler`
|
|
Compiles all `.md` files into `.html` files, while taking out the [metadata](metadata.md).
|
|
5. Markdown metadata extractor `sssg/src/plugins/markdown-metadata`
|
|
Extracts metadata into a .json file with the same name as the .MD file. Metadata format follows [this format.](metadata.md)
|
|
6. PostCSS `sssg/src/plugins/postcss`
|
|
PostCSS plugin, allows you to use PostCSS in your app.
|
|
7. Typescript compiler `sssg/src/plugins/postcss`
|
|
Allows you to compile typescript into .js files. Supports TSX with Preact.
|
|
8. Variables `ssg/src/plugins/variables`
|
|
Define variables in the build script to later use in the code. `__SOME_VARIABLE__`.
|
|
|
|
You can easily create more plugins.
|
|
|
|
All plugins are tested induvidually and in different ways. You can run all of the tests with `bun test`, however every commit they're already tested on both Windows and Linux.
|
|
|
|
## Usage
|
|
`bun add sssg`
|
|
|
|
## Example
|
|
```ts
|
|
import SSSG from "sssg";
|
|
import Dev from "sssg/src/plugins/dev";
|
|
import TSCompiler from "sssg/src/plugins/ts-compiler";
|
|
|
|
import * as path from "path";
|
|
|
|
const sssg = new SSSG({
|
|
outputFolder: path.join(__dirname, "dist"),
|
|
inputFolder: path.join(__dirname, "website"),
|
|
});
|
|
|
|
await sssg.run({
|
|
plugins: [
|
|
new TSCompiler(),
|
|
new Dev(sssg),
|
|
],
|
|
});
|
|
|
|
await sssg.build();
|
|
```
|
|
|
|
## design goals:
|
|
1. rewrite and generate custom HTML/TS/JS/whatever..
|
|
2. allow for variables and other important features in buildsystem->html
|
|
3. plugins, this ties together the top two
|
|
4. HMR and HTML/CSS reloading (in the Dev plugin)
|
|
5. Rewriteable file renaming
|
|
6. Every plugin runs on the same set of files, and can rename and reinject multiple times
|