1.3.2 • Published 9 months ago

staticit v1.3.2

Weekly downloads
-
License
MIT
Repository
github
Last release
9 months ago

Staticit - Introduction

Whether you want to increase performance of your web application or improve SEO. Generally you have 2 options, use SSR (Server Side Rendering) or SSG (Static Site Generation). SSR can be cumbersome and you will need a server to host it.

SSG is relatively simple and a good alternative. Some frameworks have this feature out of the box some don't, some are bloated and you may want a simpler solution. Here comes the Staticit!

Staticit is a improved version of a small library called react-spa-prerender. Under the hood it uses express and puppeteer to generate static files.

Since it's standalone it will work with any build tool and any front-end framework that supports routing.

How it works?

  • Serves the web application from build directory with express.
  • Renders & generates desired routes with puppeteer.
  • Reformats all generated HTML files with prettier so they'll be pretty 🥰.

Install

- Latest LTS Node.js is recommended.

  • With npm:
$ npm install -D staticit
  • With yarn:
$ yarn add --dev staticit
  • With pnpm:
$ pnpm install -D staticit

Usage

Create a file called .staticit.json in your project root directory. For minimal configuration add the following lines.

{
  "routes": ["/", "/about"],
  "outDir": "./dist",
  "port": 8080
}

- If you are going to build your application in an automated environment, for example with a CI tool. You should pass the --no-sandbox flag to puppeteer: launchOpts or you might get errors since most of them are running inside of a container with root user. (Ref)

"scripts": {
  ...
  "postbuild": "staticit"
}

References

JSON Reference

OptionDefaultDescription
routes[]Array of routes that you want to pre-render & generate static files.
outDir./distRelative path to the build directory of your application.
port8080The port where the static server will serve your web application for the puppeteer.
puppeteer: launchOpts{}Generic launch options that can be passed when launching puppeteer browser.
puppeteer: waitForOpts{}Timeout options for puppeteer browser.

--

CLI Reference

OptionDescription
--disable-prettierDisables formatting HTML files with prettier.
-c, --configTo use with different config file name.

Examples

License

This repository is licensed under the MIT License.