Security News
JSR Working Group Kicks Off with Ambitious Roadmap and Plans for Open Governance
At its inaugural meeting, the JSR Working Group outlined plans for an open governance model and a roadmap to enhance JavaScript package management.
postcss-discard-duplicates
Advanced tools
The postcss-discard-duplicates package is a PostCSS plugin designed to remove duplicate rules, declarations, and @rules from your CSS. This helps in reducing the file size and cleaning up the CSS for better performance and readability.
Discard duplicate rules
This feature removes duplicate CSS rules. If two or more rules are identical, only one is kept.
"const postcss = require('postcss');
const discardDuplicates = require('postcss-discard-duplicates');
postcss([ discardDuplicates() ])
.process('a { color: black; } a { color: black; }', { from: undefined })
.then(result => {
console.log(result.css);
// Output: 'a { color: black; }'
});"
Discard duplicate declarations within a rule
This feature removes duplicate declarations within a single rule, keeping only one instance of the declaration.
"const postcss = require('postcss');
const discardDuplicates = require('postcss-discard-duplicates');
postcss([ discardDuplicates() ])
.process('a { color: black; color: black; }', { from: undefined })
.then(result => {
console.log(result.css);
// Output: 'a { color: black; }'
});"
Discard duplicate @rules
This feature removes duplicate @rules from the CSS, ensuring that only one instance of each @rule is present.
"const postcss = require('postcss');
const discardDuplicates = require('postcss-discard-duplicates');
postcss([ discardDuplicates() ])
.process('@font-face { font-family: 'MyFont'; src: url('myfont.woff2'); }
@font-face { font-family: 'MyFont'; src: url('myfont.woff2'); }', { from: undefined })
.then(result => {
console.log(result.css);
// Output: '@font-face { font-family: 'MyFont'; src: url('myfont.woff2'); }'
});"
cssnano is a modular CSS minifier that includes functionalities similar to postcss-discard-duplicates as part of its optimization suite. It goes beyond just discarding duplicates by also compressing colors, reordering rules, and more for maximum efficiency.
postcss-merge-rules combines selectors with identical rules into one, which can indirectly remove duplicates by merging them. It's more focused on consolidation rather than direct removal of duplicates.
clean-css is a fast and efficient CSS optimizer for Node.js and the web. It provides functionalities similar to postcss-discard-duplicates by removing duplicates, but it also offers a wide range of other optimizations like reordering rules, merging identical rules, and minifying the CSS.
Discard duplicate rules in your CSS files with PostCSS.
Install via npm:
npm install postcss-discard-duplicates --save
var postcss = require('postcss')
var duplicates = require('postcss-discard-duplicates');
var css = 'h1{margin:0 auto;margin:0 auto}h1{margin:0 auto}';
console.log(postcss(duplicates()).process(css).css);
// => 'h1{margin:0 auto}'
This module will remove all duplicate rules from your stylesheets. It works on at rules, normal rules and declarations. Note that this module does not have any responsibility for normalising declarations, selectors or whitespace, so that it considers these two rules to be different:
h1, h2 {
color: blue;
}
h2, h1 {
color: blue;
}
It has to assume that your rules have already been transformed by another processor, otherwise it would be responsible for too many things.
Pull requests are welcome. If you add functionality, then please add unit tests to cover it.
MIT © Ben Briggs
FAQs
Discard duplicate rules in your CSS files with PostCSS.
We found that postcss-discard-duplicates demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 8 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
At its inaugural meeting, the JSR Working Group outlined plans for an open governance model and a roadmap to enhance JavaScript package management.
Security News
Research
An advanced npm supply chain attack is leveraging Ethereum smart contracts for decentralized, persistent malware control, evading traditional defenses.
Security News
Research
Attackers are impersonating Sindre Sorhus on npm with a fake 'chalk-node' package containing a malicious backdoor to compromise developers' projects.