//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
spank can also be used without a config. Use npx spank --help for parameters.
| 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 |
| transform | (html, url) => html | Callback for transforming HTML |
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.

