rollup-plugin-critical
Version:
Rollup plugin to generate critical CSS.
96 lines (68 loc) • 3.67 kB
Markdown


[](https://scrutinizer-ci.com/g/nystudio107/rollup-plugin-critical/?branch=master)
[](https://scrutinizer-ci.com/g/nystudio107/rollup-plugin-critical/?branch=master)
[](https://scrutinizer-ci.com/g/nystudio107/rollup-plugin-critical/build-status/master)
[](https://vitejs.dev/) & [Rollup](https://rollupjs.org/) plugin for generating critical CSS that uses the [critical](https://github.com/addyosmani/critical) generator under the hood.
```bash
npm i -D rollup-plugin-critical
```
```js
// rollup.config.js
import PluginCritical from 'rollup-plugin-critical';
export default {
input: 'index.js',
output: {
dir: 'dist',
format: 'es',
},
plugins: [
PluginCritical({
criticalUrl: 'https://nystudio107.com/',
criticalBase: './',
criticalPages: [
{ uri: '', template: 'index' },
{ uri: 'about', template: 'about/index' },
],
criticalConfig: {
},
}),
],
}
```
The base URL to use in combination with the `criticalPages` `uri`s to determine the URLs to scrape for Critical CSS.
This can also be a file system path. This is combined with `criticalPages.uri` (see below) to determine pages to scrap for critical CSS.
Determines the `criticalConfig.src` property (see below)
The base file system path to where the generated Critical CSS file should be saved.
This is combined with `criticalPages.template` (see below) with `_critical.min.css` appended to it to determine the saved critical CSS file name.
Determines the `criticalConfig.target` property (see below)
An array objects that contain the page `uri`s that are combined with the `criticalUrl` to determine the URLs to scrape for Critical CSS.
The resulting files are named with the `template` path, and saved to the `criticalBase` directory
This is the full [config for critical](https://github.com/addyosmani/critical#options) that is passed through to the `critical` package.
You may optionally override any properties you like here. The default values passed in are:
```ts
const defaultCriticalConfig: Partial<CriticalConfig> = {
inline: false,
extract: false,
width: 1200,
height: 1200,
penthouse: {
blockJSRequests: false
}
};
```
The following [critical config properties](https://github.com/addyosmani/critical#options) are set dynamically by `rollup-plugin-critical`, but can be overridden via `criticalConfig`:
- **`css`** - set to the css files that are generated in the Rollup build
- **`base`** - property is set to `criticalBase`
- **`src`** - derived from `criticalUrl` and `criticalPages.uri`
- **`target`** - derived from `criticalPages.template` with `_critical.min.css` appended to it. If the `inline` option is set to `true`, the suffix `.html` is appended instead.
[](LICENSE) © [nystudio107](https://nystudio107.com)