Skip to content

Add express middleware hooks #10

@jaredpalmer

Description

@jaredpalmer
This would allow some optional server customization, but still keep everything 'battery-pack included'

// PublicServerAPI.js
export function createServer({ renderDocument, renderApp, routes, devMiddlewares, prodMiddlewares }) {
  const server = express()
  const webpackStats = getWebpackStats()

  if (process.env.NODE_ENV === 'production') {
    server.use(compression())
    prodMiddlewares(server)
    server.use(express.static(PUBLIC_DIR))
  } else {
    devMiddlewares(server)
  }
...
// Example middleware hooks (psuedo code)
// modules/server.js
...
import { createServer } from 'react-project/server'
..
import morgan from 'morgan'
import newrelic from 'newrelic'
...

function devMiddlewares(server) {
  server.use(morgan('dev'))
}

function prodMiddlewares(server) {
  server.use(morgan('combined'))
  server.locals.newrelic = newrelic
}

createServer({
  renderDocument,
  renderApp,
  routes,
  devMiddlewares,
  prodMiddlewares
}).start()
...

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions