Start building a Preact Progressive Web App in seconds π₯
- 100/100 Lighthouse score, right out of the box (proof)
- Fully automatic code splitting for routes
- Transparently code-split any component with an
async!prefix - Auto-generated Service Workers for offline caching powered by sw-precache
- PRPL pattern support for efficient loading
- Zero-configuration pre-rendering / server-side rendering hydration
- Support for CSS Modules, LESS & autoprefixer
- Monitor your bundle/chunk sizes with built-in tracking
- Automatic app mounting, debug helpers & Hot Module Replacement
- In just 4.5kb you get a productive environment:
- preact
- preact-router
- 1.5kb of conditionally-loaded polyfills for fetch & Promise
preact create your-app-name: create a new app
preact build: build an app
preact watch: start a dev server
# once and you're good: npm i -g preact-cli # create a new project: preact create my-great-app cd my-great-app # start a live-reload/HMR dev server: npm start # go to production: npm run build
$ preact create --name directory and package name for the new app --dest Directory to create the app within [default: <name>] --type A project template to start from [Options: "default", "full", "simple", "empty"] [default: "default"] --less Pre-install LESS support [boolean] [default: false] --sass Pre-install SASS/SCSS support [boolean] [default: false] $ preact build --src Entry file (index.js) [default: "src"] --dest Directory root for output [default: "build"] --production, -p Create a minified production build. [default: true] --less, -l Build and compile LESS files [default: false] --sass, -s Build and compile SASS files [default: false] --prerender Pre-render static app content. [default: true] --clean Clear output directory before building. [default: true] --json Generate build statistics for analysis. [default: false] $ preact watch --src Entry file (index.js) [default: "src"] --port, -p Port to start a server on [default: "8080"] --host [boolean] [default: "0.0.0.0"] --prerender Pre-render static app content on initial build [default: false] $ preact serve --dir Directory root to serve static files from. [default: "build"] --cwd The working directory in which to spawn a server. [default: .] --server Which server to run, or "config" to produce a firebase config. [options: "simplehttp2server", "superstatic", "config"] [default:"simplehttp2server"] --dest Directory or filename where firebase.json should be written (used for --server config) [default: -] --port, -p Port to start a server on [default: "8080"]
# create a production build: npm run build # generate configuration in Firebase Hosting format: npm run serve -- --server config # Copy your static files to a server!