Compositor JSX static site generator
Compositor JSX static site generator
npm i @compositor/gen -g
Export a static site:
gen . --out-dir dist
Run in development mode:
gen . --dev
Given a folder structure like the following:
dist/src/about.jsxindex.jsxlab.jsontheme.json
Running gen src --out-dir dist will create HTML files:
dist/about/index.htmlindex.html
Gen will load theme.json and lab.json files in the target directory and import Lab components.
Any files ending with .jsx or .md will be used to create pages.
Markdown and JSX files can include front-matter for setting page-level attributes,
such as title and description, and also be passed to the page component as props.
Example JSX file
---title: Hello Worlddescription: This is a demo page---<Box px={3} py={4}><Heading>{props.title}</Heading></Box><CustomLabComponentdescription={props.description}></CustomLabComponent>
All front matter is passed to the JSX file as a props object.
Additionally, page-level metadata can be set using the following properties:
title page titledescription page descriptionog object of open graph datatwitter object of Twitter card datastylesheets array of stylesheet URLs to add as links in the headscripts array of JavaScript strings to include before the closing body tagWhen rendering markdown files, Gen will look for a layout property in front-matter. If a JSX file with the same name is found, it will be used as a page layout component, passing the rendered markdown content as children.
Example markdown file
---title: Aboutlayout: default-layout---# About
Example JSX layout file
------<SiteHeader ></SiteHeader><Box px={3} py={4}>{props.children}</Box><SiteFooter ></SiteFooter>
--out-dir, -d: output directory--dev, -D: run as development server--open, -o: open development server in default browser--port, -p: set port for development server