The PostCSS plugin for rcs-core
$ npm i postcss-rcs -Sor
$ yarm add postcss-rcspostcss([ require('postcss-rcs') ])See PostCSS docs for examples for your environment.
@keyframes move {
from {}
to {}
}
@media screen and (min-width: 480px) {
.selector {
background-color: lightgreen;
animation: move 4s infinite;
animation-name: move;
}
}
.main.selector {
border: 1px solid black;
}
ul li {
padding: 5px;
}will be processed to:
@keyframes move {
from {}
to {}
}
@media screen and (min-width: 480px) {
.a {
background-color: lightgreen;
animation: move 4s infinite;
animation-name: move;
}
}
.b.a {
border: 1px solid black;
}
ul li {
padding: 5px;
}Call the plugin to set options:
postcss([ require('postcss-simple-vars')({ replaceKeyframes: true }) ])Replaces animation and animation-name if a specific @keyframes is set.
Type: boolean
Default: false
Example:
// { replaceKeyframes: true }
@keyframes move {
from {}
to {}
}
.selector {
animation: move 4s infinite;
animation-name: move;
}will be processed to:
// { replaceKeyframes: true }
@keyframes a {
from {}
to {}
}
.b {
animation: a 4s infinite;
animation-name: a;
}If set to true it does not care about attribute selectors. If set to false the attribute selector [class$="lector"] will not rename .selector as it the class ends with lector.
Type: boolean
Default: false
Example:
{ ignoreAttributeSelectors: false }
.move[class$="lector"] {}
.selector {}will be process to:
.a[class$="lector"] {}
.selector {}{ ignoreAttributeSelectors: true }
.move[class$="lector"] {}
.selector {}will be process to:
.a[class$="lector"] {}
.b {}Prefixes every selectors and attribute selectors (if ignoreAttributeSelectors is false).
Type: string
Default: ''
Example:
// { ignoreAttributeSelectors: false, prefix: 'pre-' }
.move[class^="sel"] {}
.selector {}will be process to:
// { ignoreAttributeSelectors: false, prefix: 'pre-' }
.pre-a[class^="pre-sel"] {}
.pre-selector {}Suffixes every selectors and attribute selectors (if ignoreAttributeSelectors is false).
Type: string
Default: ''
Example:
// { ignoreAttributeSelectors: false, suffix: '-suf' }
.move[class$="lector"] {}
.selector {}will be process to:
// { ignoreAttributeSelectors: false, suffix: '-suf' }
.a-suf[class$="lector-suf"] {}
.selector-suf {}