1.26.0 • Published 1 year ago

@s-ui/critical-css v1.26.0

Weekly downloads
-
License
ISC
Repository
-
Last release
1 year ago

sui-critical-css

Extract Critical CSS from a set of URLs for an app

How it works

  1. Read the config options and routes provided.
  2. For each route, it opens a browser, navigate and extract the Critical CSS.
  3. Create a css file in the critical-css folder.
  4. After doing this for each route, then creates a critical.json file that could be read for every path to extract the critical-css.
  5. Use then @s-ui/critical-css-middleware to extract to use in your Express app the CSS.

How to use to extract

Install package to your project:

npm install @s-ui/critical-css -D

Programmatic usage:

In order to extract critical css and match extracted files with your page or route you can use two approaches:

  • Using path-to-regex
  • Using page component displayName

You can combine both of them.

Additionally there are two optional config parameters:

  • requiredClassNames: A list of required css class names. If they aren't present in the generated Critical CSS, it would be discarded. By default there would be 2 retries to try to get the correct Critical CSS
  • retries: Number of retries if the requiredClassNames aren't present in the Critical CSS. By default it's 2.

Using path-to-regex:

You can use Express Route Tester to create and validate that your Path-to-Regexp works as expected.

Example:

// scripts/get-critical-css-for-routes.js
import {extractCSSFromApp} from '@s-ui/critical-css'

const config = {
  hostname: 'http://localhost'
}

const routes = {
  '/:lang': {
    url: '/es'
  },
  '/:lang/catalogo-productos': {
    url: ['/es/catalogo-productos', '/en/catalogo-productos']
  }
}

extractCSSFromApp({config, routes})

Using displayName

Example:

// scripts/get-critical-css-for-routes.js
import {extractCSSFromApp} from '@s-ui/critical-css'

// Page display names
const displayNames = {
  home: 'Home',
  list: 'List'
}

const config = {
  hostname: 'http://localhost'
}

const routes = {
  [displayNames.home]: {
    url: '/es'
  },
  [displayNames.list]: {
    url: '/es/catalogo-productos',
    requiredClassNames: ['.ma-AdCardV2'],
    retries: 3
  }
}

extractCSSFromApp({config, routes})
1.25.0

1 year ago

1.26.0

1 year ago

1.24.0

2 years ago

1.23.0

2 years ago

1.21.0

2 years ago

1.22.0

2 years ago

1.20.0

2 years ago

1.19.0

2 years ago

1.18.0

2 years ago

1.17.0

2 years ago

1.16.0

2 years ago

1.15.0

2 years ago

1.15.1-beta.1

2 years ago

1.15.1-beta.0

2 years ago

1.14.0

3 years ago

1.13.0

3 years ago

1.12.0

3 years ago

1.9.0

3 years ago

1.10.0-beta.0

3 years ago

1.9.0-beta.6

3 years ago

1.9.0-beta.5

3 years ago

1.9.0-beta.4

3 years ago

1.9.0-beta.3

3 years ago

1.9.0-beta.2

3 years ago

1.9.0-beta.1

3 years ago

1.9.0-beta.0

3 years ago

1.11.0

3 years ago

1.10.0

3 years ago

1.8.0

3 years ago

1.7.0

3 years ago

1.6.0

3 years ago

1.6.0-beta.1

3 years ago

1.6.0-beta.2

3 years ago

1.6.0-beta.0

3 years ago

1.5.0

3 years ago

1.5.0-beta.1

3 years ago

1.5.0-beta.0

3 years ago

1.4.0

3 years ago

1.3.0

3 years ago

1.3.0-beta.0

3 years ago

1.2.0

3 years ago

1.2.0-beta.5

3 years ago

1.2.0-beta.4

3 years ago

1.2.0-beta.3

3 years ago

1.2.0-beta.2

3 years ago

1.2.0-beta.1

3 years ago

1.2.0-beta.0

3 years ago

1.1.0

3 years ago