node package manager
Easy collaboration. Discover, share, and reuse code in your team. Create a free org »

@dollarshaveclub/nodejs-server

Node.js Server

CircleCI codecov Greenkeeper badge

This is the main server to be used in all of Dollar Shave Club's node.js applications.

Features

  • Graceful shutdown
  • Health checks via GET /ping
  • Supports both Express and Koa
  • Rollbar

Environment Variables

  • NODE_ENV=development
  • PORT or LISTEN_PORT
  • SOCKET_TIMEOUT_SECONDS=120
  • GRACEFUL_SHUTDOWN_TIMEOUT_SECONDS=15
  • ROLLBAR_POST_SERVER_ITEM_ACCESS_TOKEN - access token for server-side rollbar

Usage

API

serve(app, [options])

Options:

  • name - name of the repo
  • port
  • socketTimeout
  • gracefulShutdownTimeout
  • rollbarPostServerItemAccessToken

For development only:

  • proxy = false - whether to proxy requests
  • proxyHostname = process.env.PROXY_HOSTNAME || release.dollarshaveclub.com - what server to proxy
  • proxyMatch = /^\/(api|cms|face-assets)\// - regex to match paths to proxy

To support proxying locally and internationally, add the following to your /etc/hosts:

::1             localhost     # should have already been added
::1             localhost.au
::1             localhost.ca
::1             localhost.uk

Express

const serve = require('@dollarshaveclub/nodejs-server')
 
const app = require('express')()
 
// app logic
 
serve(app, {
  name: 'my-app',
}).then(({ port }) => {
  console.log(port)
})

Koa

const serve = require('@dollarshaveclub/nodejs-server')
const Koa = require('koa')
 
const app = new Koa()
 
// app logic
 
serve(app, {
  name: 'my-app'
})