Security News
Bun 1.2 Released with 90% Node.js Compatibility and Built-in S3 Object Support
Bun 1.2 enhances its JavaScript runtime with 90% Node.js compatibility, built-in S3 and Postgres support, HTML Imports, and faster, cloud-first performance.
@iodigital/criticalcss
Advanced tools
NPM package to generate critical css via a configuration file
This node module makes it possible to generate critical css bundles from different pages in different viewports. It uses GitHub - addyosmani/critical under the hood.
npm install @iodigital/criticalcss
First add a configuration file in the root of your project, named criticalcss.config.js
. This file should contain a const config
for generating critical css and a const pages
with the urls and dimensions for the viewport. Example configuration:
const config = {
rebase: (asset) => { // absolute assets path
if (asset.pathname !== null && asset.pathname === asset.originUrl) {
return asset.absolutePath;
}
return asset.url;
},
dimensions: [
{"width": 320}, // height is optional
{"width": 767, "height": 3000},
{"width": 992},
{"width": 1200},
{"width": 1424}
],
penthouse: {
timeout: 60000,
forceExclude: [
".footer__columns--wrapper>.footer__column:nth-of-type(4) img"
]
}
}
const pages = {
"domain": "https://site.com",
"pages": [
{
"src": "/",
"target": "app/design/frontend/THEMEPATH/THEMEPATH/web/css/cms-critical.css"
},
{
"src": "/category/",
"target": "app/design/frontend/THEMEPATH/THEMEPATH/web/css/category-critical.css"
},
{
"src": "/some-product.html",
"target": "app/design/frontend/THEMEPATH/THEMEPATH/web/css/product-critical.css"
},
{
"src": "/checkout/#shipping",
"target": "app/design/frontend/THEMEPATH/THEMEPATH/web/css/checkout-critical.css"
}
]
}
module.exports = {
config,
pages
}
In the pages array, src
is the page you want critical css from and target
is the place to drop the newly generated critical css bundle.
Dimensions only require widths (this differs per project). The height will be chosen based on a set of most used resolutions:
const standardViewports = [
{ width: 1920, height: 1080 },
{ width: 414, height: 896 },
{ width: 1536, height: 864 },
{ width: 1366, height: 768 },
{ width: 375, height: 667 },
{ width: 360, height: 640 },
];
If you want to explicitly use a set height, you may add it to the dimensions
array like this (it will overwrite the default):
"dimensions": [
...
{ "width": 767, "height": 3000 },
...
]
To use this package, you need to run: npx iodigital-criticalcss
in the command line.
There are some environment variables that can be used while generating the criticalcss.
export DOMAIN=https://www.google.com
npx iodigital-criticalcss
or
DOMAIN=https://www.google.com npx iodigital-criticalcss
FAQs
NPM package to generate critical css via a configuration file
We found that @iodigital/criticalcss demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Bun 1.2 enhances its JavaScript runtime with 90% Node.js compatibility, built-in S3 and Postgres support, HTML Imports, and faster, cloud-first performance.
Security News
Biden's executive order pushes for AI-driven cybersecurity, software supply chain transparency, and stronger protections for federal and open source systems.
Security News
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.