roxiness / spank

Slap the pages out of a SPA

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

spank

Static Site Generator (SSG)

Exports HTML pages from your SPA

Usage

//spank.config.js
module.exports = {
  sitemap: 'path/to/a-list-of-urls.json',
  template: 'dist/__index.html',
  script: 'dist/main.js',
  outputDir: 'dist'
}

open your terminal and type

npx spank
Note

spank can also be used without a config. Use npx spank --help for parameters.


Config options

prop default description
sitemap array of paths. Eg. ['/', '/about', '/contact']. Can also be a path to a .js file exporting an array of paths. Eg. ./sitemap.js
template dist/__app.html path to the HTML template to render the SPA in. Often static/index.html
script dist/build/bundle.js Path to the app script. Often dist/build/bundle.js or dist/build/main.js
outputDir dist Folder to save HTML files to.
forceIndex false Write /about to about/index.html instead of about.html
inlineDynamicImports false Required if app uses dynamic imports
concurrently 3 Max simultaneous running jobs
eventName If specified, HTMLs aren't saved till the page has emitted the event.
host http://jsdom.ssr Simulated host
blacklist [] List of paths to be ignored. Regular expressions are supported when using spank.config.js
depth 2 How far to crawl any path in the sitemap
ssrOptions {} Options to be passed to tossr

How does it work?

For each path in the sitemap, Spank creates a corresponding SPA in a simulated browser. Spank will crawl pages in the sitemap as far as depth is set. The HTML for each page is then saved to the output folder.


routify

About

Slap the pages out of a SPA


Languages

Language:JavaScript 100.0%