Hyper minimal framework for the modern web.


Keywords
blog-engine, javascript, serverless, ssg, ssr, static-site, static-site-generator, website
License
MIT
Install
npm install presta@0.41.1

Documentation

Presta

npm version test coverage npm bundle size

Minimalist serverless framework for SSR, SSG, serverless APIs and more.

Usage

In each file, define a route:

export const route = '/products/:sku'

Or generate an array of static paths:

export async function getStaticPaths() {
  return ['/products/book']
}

Or both, as a fallback for static files that aren't matched.

export const route = '/products/:sku'

export async function getStaticPaths() {
  return ['/products/book']
}

Handlers are just... serverless handlers.

export async function handler(event, context) {}

Return a string to render HTML:

export async function handler(event, context) {
  return `<h1>Hello world!</h1>`
}

Or a normal serverless response object:

export async function handler(event, context) {
  return {
    statusCode: 200,
    headers: {
      'Content-Type': 'text/html',
    },
    body: `<h1>Hello world!</h1>`,
  }
}

For convenience, you can use a few shortcuts that automatically set Content-Type headers, including html, json, and xml:

export async function handler(event, context) {
  return {
    html: `<h1>Hello world!</h1>`,
  }
}

Config

Peep the CLI with npx presta -h for more info. You can also define a config file with any CLI options predefined:

export const files = ['index.tsx', 'pages/*.jsx']
export const output = 'build'
export const assets = 'public'

Deployment

Presta builds everything to config.output.

  • static paths and assets to <config.output>/static
  • serverless functions to <config.output>/functions

Ecosystem

Contributing

We'd love your help getting Presta to v1.0.0. Have a look at the contributing doc or say hello in a new Issue. Also please review our code of conduct.

License

MIT License © Sure Thing