Skip to content

Latest commit

 

History

History
143 lines (100 loc) · 2.85 KB

File metadata and controls

143 lines (100 loc) · 2.85 KB

NHS prototype kit

This repo contains the code for the NHS prototype kit is distributed as an npm package.

The code contains:

  • an Express middleware app
  • some useful default settings for Express
  • some Nunjucks filters
  • Nunjucks views, including a template

Installing the kit

Using the template repository

The simplest way to get started is to use the NHS prototype kit template repository.

From there, select 'Use this as a template' and follow the instructions.

Manual installation

You can also add the kit to an existing Express app by running:

npm install nhsuk-prototype-kit

Then, within your app.js file, add this line to the top:

import NHSPrototypeKit from 'nhsuk-prototype-kit'

Or, if using CommonJS:

const NHSPrototypeKit = require('nhsuk-prototype-kit')

Initialise the prototype with a reference to your custom routes like this:

import routes from './app/routes.js'

const viewsPath = [
  'app/views/'
]

const entryPoints = [
  'app/stylesheets/*.scss'
]

const prototype = await NHSPrototypeKit.init({
  serviceName: 'Your service name',
  buildOptions: {
    entryPoints
  },
  routes,
  viewsPath
})

You can then start the prototype using this:

prototype.start()

If you want to set session data defaults, or locals, pass them to the init function:

import sessionDataDefaults from './app/data/session-data-defaults.js'
import locals from './app/locals.js'
import routes from './app/routes.js'

const viewsPath = [
  'app/views/'
]

const prototype = await NHSPrototypeKit.init({
  serviceName: 'Your service name',
  buildOptions: {
    entryPoints: ['app/stylesheets/*.scss']
  },
  routes,
  locals,
  sessionDataDefaults,
  viewsPath
})

Using the Nunjucks filters only

If you only want to use the Nunjucks filters, you can import them separately:

import { nunjucksFilters } from 'nhsuk-prototype-kit'

nunjucksFilters.addAll(nunjucksEnv)

Or import individual filters:

import { nunjucksFilters } from 'nhsuk-prototype-kit'

nunjucksEnv.addFilter('formatNhsNumber', nunjucksFilters.formatNhsNumber)
nunjucksEnv.addFilter('startsWith', nunjucksFilters.startsWith)

Using the Express middleware only

If you only want to use the Express middleware, you can import it separately:

import { middleware } from 'nhsuk-prototype-kit'

middleware.configure({
  app: app,
  serviceName: serviceName,
  locals: locals,
  routes: routes,
  sessionDataDefaults: sessionDataDefaults
})

Or you can choose to only use individual middleware functions:

import { middleware } from 'nhsuk-prototype-kit'

app.use(middleware.autoRoutes)

Using the utilities

You can also import the utility functions separately:

import { utils } from 'nhsuk-prototype-kit'

const port = await utils.findAvailablePort(3000)