๐ PostCSS plugin that intelligently removes duplicate CSS properties, reduces bundle size, and improves CSS maintainability. Handles !important declarations, vendor prefixes, and selector filtering with zero configuration.
npm install postcss-remove-duplicate-values> Smart PostCSS plugin that removes duplicate CSS properties, reduces bundle size, and improves CSS maintainability.
Automatically removes duplicate CSS properties from your stylesheets while keeping the most important ones. Perfect for cleaning up CSS and improving performance.
!important declarations intelligentlybash
npm install postcss-remove-duplicate-values --save-dev
or
pnpm add postcss-remove-duplicate-values -D
or
yarn add postcss-remove-duplicate-values -D
`$3
`js
// postcss.config.js
module.exports = {
plugins: [
require('postcss-remove-duplicate-values')
]
}
`$3
The plugin automatically removes duplicates from your CSS.๐ Examples
$3
`css
/ Before /
.button {
color: red;
color: blue;
margin: 10px;
margin: 20px;
}/ After /
.button {
color: blue;
margin: 20px;
}
`$3
`css
/ Before /
.button {
color: red !important;
color: blue;
font-weight: normal;
font-weight: bold !important;
}/ After /
.button {
color: red !important;
font-weight: bold !important;
}
`$3
`css
/ Before /
.button {
transform: translateX(40px);
-webkit-transform: translateX(10px);
-moz-transform: translateX(10px);
transform: translateX(10px);
}/ After /
.button {
/ Plugin removes duplicate 'transform' properties, keeping the last one /
/ Vendor prefixes are preserved /
-webkit-transform: translateX(10px);
-moz-transform: translateX(10px);
transform: translateX(10px);
}
`โ๏ธ Configuration Options
Before applying the plugin, you can configure the following options:
| Option | Type | Default |
| --------------------------------- | --------------------------------------------------- | ----------- |
|
selector | (selector: string) => boolean \| string \| RegExp | undefined |
| preserveEmpty | boolean | false |$3
Filter which CSS selectors to process.`js
// Only process .button selectors
removeDuplicateValues({
selector: '.button'
})// Process selectors matching regex
removeDuplicateValues({
selector: /^\.btn-/
})
// Custom function
removeDuplicateValues({
selector: (selector) => selector.includes('button')
})
`$3
Keep or remove empty CSS rules.`js
// Remove empty rules (default)
removeDuplicateValues({
preserveEmpty: false
})// Keep empty rules
removeDuplicateValues({
preserveEmpty: true
})
`๐ง Advanced Usage
$3
`js
const postcss = require('postcss')
const removeDuplicateValues = require('postcss-remove-duplicate-values')const css =
postcss([removeDuplicateValues()])
.process(css)
.then(result => {
console.log(result.css)
// Output: .button { color: blue; }
})
`$3
`js
// webpack.config.js
module.exports = {
module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader',
{
loader: 'postcss-loader',
options: {
plugins: [
require('postcss-remove-duplicate-values')
]
}
}
]
}
]
}
}
`
๐ More Examples
$3
`css
/ Input CSS /
.container {
color: red;
color: blue;
}
.button {
margin: 10px;
margin: 20px;
}/ With selector: '.container' /
.container {
color: blue;
}
.button {
margin: 10px;
margin: 20px; / Not processed /
}
`$3
`css
/ Input CSS /
.empty-rule {
}
.button {
color: blue;
}/ With preserveEmpty: false /
.button {
color: blue;
}
/ .empty-rule removed /
/ With preserveEmpty: true /
.empty-rule {
}
.button {
color: blue;
}
``Test the plugin in real-time with our interactive playground:
Made with โค๏ธ by Bharat Rawat
[PostCSS Remove Duplicate Values]: https://github.com/xettri/postcss-remove-duplicate-values
[npm_url]: https://www.npmjs.com/package/postcss-remove-duplicate-values
[git_url]: https://github.com/xettri/postcss-remove-duplicate-values
[PostCSS]: https://github.com/postcss/postcss