postcss-filter-rules
v0.8.0
Published
PostCSS plugin to filter rules by applying a callback function on each selector. Can be used to filter out individual rules or remove all rules besides those you wish to keep.
Downloads
2,042
Maintainers
Readme
PostCSS Filter Rules
PostCSS plugin that filters rules with a callback function on each selector and at-rule. For instance, to filter out individual rules or remove all rules besides those you wish to keep.
Installation
npm install --save-dev postcss postcss-filter-rules
Usage
postcss([
require('postcss-filter-rules')(options)
])
See PostCSS docs for examples for your environment.
Examples
Filtering selectors
To keep only the selectors which contain the .styleguide
class in the following CSS:
.styleguide span,
.button span {
color: red;
}
.button {
color: blue;
}
Use the following filter
:
{
filter: (selector, parts) => parts.includes('.styleguide')
}
Which will output:
.styleguide span {
color: red;
}
Options
postcss-filter-rules accepts options with following signature:
{
filter(selector: string, parts: string[]): boolean,
splitFunction(selector: string): string[],
}
Note: keepAtRules
is deprecated as of 0.8.0 and will raise a warning. As such, all at-rules are retained by default unless empty. Plugins, such as postcss-discard-unused, are better fit-for-purpose for removing at-rules which are no longer referenced in the resulting CSS, such as @keyframes
or @font-face
.
filter
Called for each selector in a rule:
- If the function returns a
true
, the selector is retained. Otherwise, the selector is removed. - If all of the selectors for a rule are removed, the rule is also removed.
- If all rules within an at-rule are removed, the rule is also removed.
The function receives two arguments:
- selector (
string
): The selector, as authored in CSS - parts (
string[]
): An array of elements, classes, IDs and pseudo-classes in the selector. Used to quickly search for the existence of classes or IDs.
splitFunction
A custom callback that can be used to generate the parts
argument of the callback. If one is not provided, the default callback is used.