@s-ui/critical-css-middleware

1.2.0 • Public • Published

sui-critical-css-middleware

Express middleware to handle all regarding Critical CSS usage

This middleware works along with @s-ui/critical-css package

Install

Install package to your project:

npm install @s-ui/critical-css-middleware -E

How to use

You should provide the deviceType and the manifest from Webpack in order to find the criticalCSS created with @s-ui/critical-css package.

If found, it will put in req.criticalCSS the needed CSS for the page.

/* eslint-disable no-console */
const getCriticalCssMiddleware = require('@s-ui/critical-css/src/middleware.cjs')
const parser = require('ua-parser-js')
const fs = require('fs')
const path = require('path')

let manifest = {}
try {
  manifest = JSON.parse(
    fs.readFileSync(
      path.join(process.cwd(), 'critical-css', 'critical.json'),
      'utf8'
    )
  )
  console.log('manifest for Critical CSS:')
  console.log(manifest)
} catch (error) {
  console.warn('manifest for Critical CSS is missing')
}

module.exports = (req, res, next) => {
  // calculate device type with userAgent
  const ua = parser(req.headers['user-agent'])
  const {type} = ua.device

  return getCriticalCssMiddleware({
    deviceType: type,
    manifest
  })(req, res, next)
}

Readme

Keywords

none

Package Sidebar

Install

npm i @s-ui/critical-css-middleware

Weekly Downloads

954

Version

1.2.0

License

none

Unpacked Size

3.14 kB

Total Files

3

Last publish

Collaborators

  • alejandro.ferrante
  • ivanmlaborda
  • salvador.juan
  • andresin87.adevinta
  • izeller
  • gfabregoadv
  • a.ferrer
  • ignacio_navarro
  • oscar_ramirez
  • jordi.munoz
  • joanleon-adv
  • aitor.rodriguez
  • luis-garrido
  • jenifer.lopez
  • isabelgomez87
  • pa.chruscinski.ext
  • schibstedspain
  • alfredo.arronte
  • belen.santos
  • xavi_ballestar
  • ferrangbtw
  • jamile.radloff
  • davidmartin2108
  • sergi.quintela
  • estefania_garcia
  • carlosvillu-adevinta
  • miriam-gil
  • arnau.guell
  • ferran.simon
  • victor.perez.adevinta
  • mariapaula.forero.ext
  • oscar.gomez
  • david.nieto
  • oriol.puig
  • nacho_torrella
  • xavi.murcia
  • ignacio.rodriguez
  • francisco.ruiz.lloret
  • sziauberyte
  • alfredo.zimperz
  • andresadv
  • javiauso
  • alverd004
  • marian.lucaci
  • pablogs
  • alisa_bayanova
  • cristhianb
  • sergiocollado
  • pablo.rey-adevinta
  • beatrizip
  • alex.castells
  • david.cuadrado.ext
  • giovanny.sayas.ext
  • patricio.sartore
  • azahara
  • marc.benito
  • sergio.escano
  • cristina.rodriguez.duque
  • pol.valls
  • frandelacasa-adevinta
  • carolina.mallo.ext
  • daniel.perez.ext
  • hpintos_adevinta
  • carlos.gonzalezl
  • albert.peiro
  • oscar-raig-adevinta
  • thomas.page.ext
  • sebastian.badea.adevinta
  • victoria.pasichnyk.ext
  • sendami.luque.ext
  • luz_adv
  • alfredo.narvaez
  • ruben-martin
  • dann41
  • emiliovz
  • adria.velardos
  • arturo.vicente
  • diegomr
  • sergi.martinez.adevinta
  • guillemgc3
  • frontend-jobs
  • javiermiguel
  • atilioscolaroadv
  • crotundu.adevinta
  • candymd
  • florinz
  • denis_z
  • anya_ok