inline-critical/README.md

94 lines
3.2 KiB
Markdown
Raw Normal View History

2014-08-04 00:01:39 +02:00
# inline-critical
2014-08-04 00:05:54 +02:00
Inline critical-path css and load the existing stylesheets asynchronously.
2019-03-26 17:31:54 +01:00
Existing link tags will also be wrapped in `<noscript>` so the users with javascript disabled will see the site rendered normally.
2014-08-04 00:01:39 +02:00
2019-10-24 13:34:59 +02:00
[![NPM version][npm-image]][npm-url] [![Build Status][ci-image]][ci-url] [![Dependency Status][depstat-image]][depstat-url] [![Download][dlcounter-image]][dlcounter-url] [![Coverage Status][coveralls-image]][coveralls-url]
2014-08-04 00:01:39 +02:00
## Installation
This module is installed via npm:
2019-03-26 17:31:54 +01:00
```bash
2014-08-04 00:01:39 +02:00
$ npm install inline-critical
```
## Example Usage
2019-03-26 17:31:54 +01:00
```js
2020-05-24 01:04:28 +02:00
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);
2014-08-04 00:01:39 +02:00
```
2014-10-19 03:16:34 +02:00
2015-06-09 17:19:31 +02:00
## Example Usage ignoring stylesheet per regex
2019-03-26 17:31:54 +01:00
```js
2020-05-24 01:04:28 +02:00
const inline = require('inline-critical');
const html = fs.readFileSync('test/fixtures/index.html', 'utf8');
const critical = fs.readFileSync('test/fixtures/critical.css', 'utf8');
2015-06-09 17:19:31 +02:00
2020-05-24 01:04:28 +02:00
const inlined = inline(html, critical, {
2019-03-26 17:31:54 +01:00
ignore: [/bootstrap/],
2015-06-09 17:19:31 +02:00
});
2015-06-09 17:21:09 +02:00
```
2015-06-09 17:19:31 +02:00
2015-06-25 23:45:27 +02:00
## CLI
2019-03-26 17:31:54 +01:00
inline-critical works well with standard input.
You can either pass in the html
2015-06-25 23:45:27 +02:00
```bash
cat index.html | inline-critical critical.css
```
2019-03-26 17:31:54 +01:00
2015-06-25 23:45:27 +02:00
or just flip things around
2019-03-26 17:31:54 +01:00
2015-06-25 23:45:27 +02:00
```bash
cat critical.css | inline-critical index.html
```
2019-03-26 17:31:54 +01:00
2018-01-03 23:01:02 +01:00
or pass in the file as an option
2019-03-26 17:31:54 +01:00
2015-06-25 23:45:27 +02:00
```bash
inline-critical critical.css index.html
```
2019-03-26 17:31:54 +01:00
2015-06-25 23:45:27 +02:00
without having to worry about the correct order
2019-03-26 17:31:54 +01:00
2015-06-25 23:45:27 +02:00
```bash
inline-critical index.html critical.css
```
2019-03-26 17:31:54 +01:00
2015-06-25 23:45:27 +02:00
Run `inline-critical --help` to see the list of options.
2015-06-09 17:19:31 +02:00
## inline(html, styles, options?)
2014-10-19 03:16:34 +02:00
- `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
2020-05-20 00:37:10 +02:00
- `polyfill` will use loadCSS polyfill instead of preferred media=print strategy (https://www.filamentgroup.com/lab/load-css-simpler/)
- `preload` will add preload tags
2016-04-18 06:34:32 +02:00
- `minify` will minify the styles before inlining (default: true)
2014-10-19 03:16:34 +02:00
- `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
2015-06-09 17:19:31 +02:00
- `ignore` ignore matching stylesheets when inlining.
- `selector` defines the element used by loadCSS as a reference for inlining.
2019-11-16 00:00:12 +01:00
- `noscript` specifies position of noscript fallback ('body' - end of body, 'head' - end of head, false - no noscript)
2014-10-19 03:16:34 +02:00
## License
MIT
2017-02-10 17:09:46 +01:00
[npm-url]: https://npmjs.org/package/inline-critical
2019-10-07 16:20:57 +02:00
[npm-image]: https://img.shields.io/npm/v/inline-critical.svg
[ci-url]: https://github.com/bezoerb/inline-critical/actions?workflow=Tests
[ci-image]: https://github.com/bezoerb/inline-critical/workflows/Tests/badge.svg
2017-02-10 17:09:46 +01:00
[depstat-url]: https://david-dm.org/bezoerb/inline-critical
2019-10-07 16:20:57 +02:00
[depstat-image]: https://img.shields.io/david/bezoerb/inline-critical.svg
2017-02-10 17:09:46 +01:00
[dlcounter-url]: https://www.npmjs.com/package/inline-critical
[dlcounter-image]: https://img.shields.io/npm/dm/inline-critical.svg
[coveralls-url]: https://coveralls.io/github/bezoerb/inline-critical?branch=master
2019-10-07 16:20:57 +02:00
[coveralls-image]: https://img.shields.io/coveralls/github/bezoerb/inline-critical/master.svg