PostCSS plugin to unwrap nested rules like how Sass does it
npm install postcss-nested title="Philosopher’s stone, logo of PostCSS"
src="https://postcss.org/logo-leftp.svg">
[PostCSS] plugin to unwrap nested rules closer to Sass syntax.
``css
.phone {
&_title {
width: 500px;
@media (max-width: 500px) {
width: auto;
}
body.is_dark & {
color: white;
}
}
img {
display: block;
}
}
.title {
font-size: var(--font);
@at-root html {
--font: 16px;
}
}
`
will be processed to:
`css
.phone_title {
width: 500px;
}
@media (max-width: 500px) {
.phone_title {
width: auto;
}
}
body.is_dark .phone_title {
color: white;
}
.phone img {
display: block;
}
.title {
font-size: var(--font);
}
html {
--font: 16px;
}
`
Related plugins:
- Use [postcss-current-selector] after this plugin if you wantpostcss-nested-ancestors
to use current selector in properties or variables values.
- Use [] before this plugin if you want^&
to reference any ancestor element directly in your selectors with .
Alternatives:
- See also [postcss-nesting], which implements [CSSWG draft].postcss-nested-props
- [] for nested properties like font-size.
alt="Sponsored by Evil Martians" width="236" height="54">
[postcss-current-selector]: https://github.com/komlev/postcss-current-selectorpostcss-nested-ancestors
[]: https://github.com/toomuchdesign/postcss-nested-ancestorspostcss-nested-props
[]: https://github.com/jedmao/postcss-nested-propspostcss-nesting`]: https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-nesting
[
[CSSWG draft]: https://drafts.csswg.org/css-nesting-1/
[PostCSS]: https://github.com/postcss/postcss