0.0.22 • Published 6 years ago

jepa v0.0.22

Weekly downloads
1
License
MIT
Repository
github
Last release
6 years ago

jepa · npm

A highly customizable React framework for painless SPAs.

Getting Started

yarn add jepa react react-dom
  # or
npm install --save jepa react react-dom

Table of Contents

Customization

Files

You can optionally replace the following files:

  • src/server/index.js: The server entrypoint.
  • src/server/renderServerWrapper.js: A function that takes a React.Component and return an object of shape:

    {
      renderedRoot: React.Component,
    
      // HTML string that will be placed after other styles in the head.
      style: String,
    
      // HTML string that will be placed before other scripts in the end
      // of the body, useful for providing SSRed stores, for example
      // Redux or Apollo stores.
      script: String
    }
  • src/client/renderClientWrapper.js: A function that takes a React.Component and returns a React component.

  • src/universal/Root.js: The root of the universal app.

jepa.options.js

  • name (String): The name of the project.
  • host (String): Defaults to 0.0.0.0.
  • port (Number): Defaults to 3000.
  • clientDevServerPort (Number): Defaults to 3001.
  • basePath (String): The base URL the app will be mounted at. Useful when your app is served behind a proxy. Defaults to /.
  • getRouter (AsyncFunction): An async function that returns an express router.
  • compress (Boolean|Object): Set this to true or object with compression options to enable HTTP compression. Defaults to !__DEV__.
  • favicon
  • robotsTxt (String)
  • manifestJson (Object)

TODO:

Environment Variables

Environmental variables can be used to override options that were set in jepa.options.js during startup time. You can place a .env file in src/ folder.

The following variables are currently supported:

  • process.env.HOST
  • process.env.PORT

jepa.config.js

  • webpackModify (AsyncFunction): A function that takes an object argument of shape {webpackConfig, target: 'web' || 'node', env: 'dev' || 'prod'}, and should return a webpack config object.
  • postcss (Object): postcss-loader options.

Runtime Dependencies

By default both client and server are bundled with Webpack, which means there is no use of node_modules during runtime. Most of the time this works perfectly fine however there are cases when certain dependencies can't be bundled (usually these are native dependencies).

You can create a package.json file and optionally package-lock.json or yarn.lock files and specify dependencies there that shouldn't be bundled with Webpack and installed to node_modules.