12.0.1 • Published 1 month ago

inline-critical v12.0.1

Weekly downloads
23,074
License
MIT
Repository
github
Last release
1 month ago

inline-critical

Inline critical-path css and load the existing stylesheets asynchronously. Existing link tags will also be wrapped in <noscript> so the users with javascript disabled will see the site rendered normally.

npm version Build Status Download Coverage Status

Installation

This module is installed via npm:

$ npm install inline-critical

Example Usage

const inline = require('inline-critical');
const html = fs.readFileSync('test/fixtures/index.html', 'utf8');
const critical = fs.readFileSync('test/fixtures/critical.css', 'utf8');
const inlined = inline(html, critical);

Example Usage ignoring stylesheet per regex

const inline = require('inline-critical');
const html = fs.readFileSync('test/fixtures/index.html', 'utf8');
const critical = fs.readFileSync('test/fixtures/critical.css', 'utf8');

const inlined = inline(html, critical, {
  ignore: [/bootstrap/],
});

CLI

inline-critical works well with standard input. You can either pass in the html

cat index.html | inline-critical critical.css

or just flip things around

cat critical.css | inline-critical index.html

or pass in the file as an option

inline-critical critical.css index.html

without having to worry about the correct order

inline-critical index.html critical.css

Run inline-critical --help to see the list of options.

inline(html, styles, options?)

  • html is the HTML you want to use to inline your critical styles, or any other styles
  • styles are the styles you're looking to inline
  • options is an optional configuration object
    • strategy select the preload strategy
    • extract will remove the inlined styles from any stylesheets referenced in the HTML
    • basePath will be used when extracting styles to find the files references by href attributes
    • ignore ignore matching stylesheets when inlining.
    • selector defines the element used by loadCSS as a reference for inlining.
    • noscript specifies position of noscript fallback ('body' - end of body, 'head' - end of head, false - no noscript)
    • replaceStylesheets takes an array of stylesheet hrefs to replace the original links in the document. (Used by critical when you extract uncritical css to a target file)

PreloadStrategy

The mechanism to use for lazy-loading stylesheets. JS indicates that a strategy requires JavaScript (falls back to <noscript>).

  • default: Move stylesheet links to the end of the document and insert preload meta tags in their place.
  • "body": Move all external stylesheet links to the end of the document.
  • "media": Load stylesheets asynchronously by adding media="print" and swap to media="all" once loaded (https://www.filamentgroup.com/lab/load-css-simpler/). JS
  • "swap": Convert stylesheet links to preloads that swap to rel="stylesheet" once loaded. JS
  • "polyfill": Inject LoadCSS and use it to load stylesheets. JS

Adopted from critters

License

MIT

12.0.1

1 month ago

12.0.0

3 months ago

11.0.0

7 months ago

11.0.1

7 months ago

10.0.0

2 years ago

10.0.1

2 years ago

9.0.1

2 years ago

9.0.0

3 years ago

8.0.0

3 years ago

7.0.0

3 years ago

6.0.3

3 years ago

6.0.2

3 years ago

6.0.1

4 years ago

6.0.0

4 years ago

5.3.1

4 years ago

4.1.2

4 years ago

4.1.1

4 years ago

5.3.0

4 years ago

4.1.0

4 years ago

4.0.10

5 years ago

5.2.3

5 years ago

4.0.9

5 years ago

4.0.8

5 years ago

5.2.2

5 years ago

5.2.1

5 years ago

5.2.0

5 years ago

5.1.3

5 years ago

5.1.2

5 years ago

5.1.1

5 years ago

5.1.0

5 years ago

5.0.1

5 years ago

5.0.0

5 years ago

4.0.7

5 years ago

4.0.6

5 years ago

4.0.5

6 years ago

4.0.4

6 years ago

4.0.3

6 years ago

4.0.2

6 years ago

4.0.1

6 years ago

4.0.0

6 years ago

3.1.0

6 years ago

3.0.0

6 years ago

2.4.2

7 years ago

2.4.1

7 years ago

2.4.0

7 years ago

2.3.0

7 years ago

2.2.0

8 years ago

2.1.5

8 years ago

2.1.4

8 years ago

2.1.3

8 years ago

2.1.2

8 years ago

2.1.0

8 years ago

2.0.0

8 years ago

1.0.0

8 years ago

0.4.4

9 years ago

0.4.3

9 years ago

0.4.2

9 years ago

0.4.1

9 years ago

0.4.0

9 years ago

0.3.0

9 years ago

0.2.2

9 years ago

0.2.1

9 years ago

0.2.0

9 years ago

0.1.4

9 years ago

0.1.3

9 years ago

0.1.2

9 years ago

0.1.1

9 years ago

0.1.0

9 years ago

0.0.10

9 years ago

0.0.9

9 years ago

0.0.8

9 years ago

0.0.7

9 years ago

0.0.6

9 years ago

0.0.5

10 years ago

0.0.4

10 years ago

0.0.3

10 years ago

0.0.2

10 years ago