1.3.0 • Published 3 years ago
critical-css-inliner v1.3.0
critical-css-inliner
Critical-css-inliner allows you to extract and inline critical (above-the-fold) CSS in HTML page. It might be helpful to speed up First Contentful Paint.
How it works
- Critical-css-inliner finds all external stylesheets (
<link rel="stylesheet" href="...">). - It extracts critical CSS (above-the-fold).
- It inlines critical CSS in HTML page.
- It removes critical CSS from external stylesheets.
- It makes external stylesheets asynchronous (using loadCSS)
Critical-css-inliner uses Critical-css-parser under the hood, so IT ALSO SUPPORTS ADAPTIVE DESIGN (BOTH DESKTOP AND MOBILE VERSIONS)!
Comparison with other popular libraries
| Critical-css-inliner | Critical |
|---|---|
| execution time: 7.4 s | execution time: 4.7 s |
| result: correct | result: wrong |
| inlined: 15.8 KB (less is better) | inlined: 16.4 KB (less is better) |
| auto extracting: true | auto extracting: true |
| Critters | Penthouse |
|---|---|
| execution time: 3.5 s | execution time: 3.5 s |
| result: correct | result: wrong |
| inlined: 15.2 KB (less is better) | inlined: 4.7 KB (less is better) |
| auto extracting: false | auto extracting: false |
Appropriate webpack plugin: webpack-critical-css-inliner
Installation
npm install --save-dev critical-css-inliner
// or
yarn add --dev critical-css-inlinerDocs
const criticalCSSInliner = require('critical-css-inliner');
await criticalCSSInliner({
// Your entrypoint
base: 'dist/',
// HTML source file
src: 'index.html',
// HTML target file
target: 'index-critical.html',
// Add Google Fonts to critical CSS
inlineGoogleFonts: true,
// Minify all styles
minify: true,
// ignore styles from the following stylesheets
ignoreStylesheets: [/bootstrap/],
// inline styles with the following CSS rules
whitelist: /#foo|\.bar/
});Example
const criticalCSSInliner = require('critical-css-inliner');
(async () => {
await criticalCSSInliner({
base: 'dist/',
src: 'index.html',
target: 'index-critical.html',
inlineGoogleFonts: true,
minify: true,
ignoreStylesheets: [/bootstrap/],
whitelist: /#foo|\.bar/
});
})();Usage
criticalCSSInliner
Pass options to criticalCSSInliner({ ... }).
criticalCSSInliner({...}) returns:
<Promise<true>>
License
MIT license