Skip to content

A simple and lightweight beautifier plugin for Express.

License

Notifications You must be signed in to change notification settings

hsynlms/express-prettier

Repository files navigation

express-prettier

A simple and lightweight beautifier plugin for Express.

Downloads install size

express-prettier has support of beautifying payloads via query parameter to make responses more readable for developers/humans. The plugin itself uses prettier under the hood and is capable of parsing/formatting anything that prettier can.

express-prettier registers itself as an express middleware to beautify the response payload before it gets sent.

Note: streams and buffers are excluded in beautification process.

Install

$ npm install express-prettier

Usage

const app = require('express')()
const expressPrettier = require('express-prettier')

app.use(
  expressPrettier(
    { fallbackOnError: false }
  )
)

app.get('/', (req, res) => {
  const obj = {
    blackLivesMatter: true,
    favSinger: 'Ahmet Kaya'
  }

  res.setHeader('content-type', 'application/json')
  res.send(obj)
})

app.listen(3000, () => {
  console.log('Express server is running on port: 3000')
})

// -------------------------------

// http://localhost:3000 -> will print out below result
/*
{"blackLivesMatter":true,"favSinger":"Ahmet Kaya"}
*/

// http://localhost:3000?pretty=true -> will print out below result
/*
{
  "blackLivesMatter": true,
  "favSinger": "Ahmet Kaya"
}
*/

You are allowed to change the query parameter option.

app.use(
  expressPrettier(
    {
      query: {
        name: 'beautify',
        value: 'yes'
      }
    }
  )
)

// -------------------------------

// http://localhost:3000 -> will print out below result
/*
{"blackLivesMatter":true,"favSinger":"Ahmet Kaya"}
*/

// http://localhost:3000?beautify=yes -> will print out below result
/*
{
  "blackLivesMatter": true,
  "favSinger": "Ahmet Kaya"
}
*/

You can enable beautification for all outgoing payloads regardless the query parameter.

app.use(
  expressPrettier(
    { alwaysOn: true }
  )
)

// -------------------------------

// http://localhost:3000 -> will print out below result
/*
{
  "blackLivesMatter": true,
  "favSinger": "Ahmet Kaya"
}
*/

Options

Name Type Default Description
alwaysOn boolean false To make all the payloads beautified in anyway
fallbackOnError boolean true If something bad happens, send the original payload. If its false, an error will be thrown
overrideContentLength boolean true Re-calculate content-length header for the beautified response
query object { name: 'pretty', value: 'true' } The query parameter that triggers the plugin to beautify the outgoing payload
prettierOpts object { tabWidth: 2, parser: 'json-stringify' } Please take a look prettier official documentation for more information