postcss-composes
Advanced tools
Comparing version 0.0.4 to 0.1.0
{ | ||
"name": "postcss-composes", | ||
"version": "0.0.4", | ||
"version": "0.1.0", | ||
"main": "src/index.js", | ||
@@ -5,0 +5,0 @@ "description": "PostCSS plugin to make `composes` work anywhere", |
# PostCSS Composes [![Build Status][ci-img]][ci] | ||
[PostCSS] plugin to make `composes` work anywhere. | ||
[PostCSS] plugin to make [CSS Modules]' `composes` work with any selectors. | ||
[PostCSS]: https://github.com/postcss/postcss | ||
[ci-img]: https://travis-ci.org/MicheleBertoli/postcss-composes.svg | ||
[ci]: https://travis-ci.org/MicheleBertoli/postcss-composes | ||
**Caution: use at your own risk.** | ||
@@ -34,1 +32,35 @@ ```css | ||
See [PostCSS] docs for examples for your environment. | ||
## Why? | ||
[CSS Modules]' `composes` is great but it only works with classes (see: [33], [41], [42], [68] and [80]). | ||
For example, the [suggested] way of composing pseudo-classes with [CSS Modules] requires the creation of extra classes: | ||
```css | ||
.red { | ||
color: red; | ||
} | ||
.blue-on-hover:hover { | ||
color: blue; | ||
} | ||
.foo { | ||
composes: red blue-on-hover; | ||
} | ||
``` | ||
## Credits | ||
Thanks [Aaron7] for the idea. | ||
[CSS Modules]: https://github.com/css-modules/css-modules | ||
[PostCSS]: https://github.com/postcss/postcss | ||
[ci-img]: https://travis-ci.org/MicheleBertoli/postcss-composes.svg | ||
[ci]: https://travis-ci.org/MicheleBertoli/postcss-composes | ||
[33]: https://github.com/css-modules/css-modules/issues/33 | ||
[41]: https://github.com/css-modules/css-modules/issues/41 | ||
[42]: https://github.com/css-modules/css-modules/issues/42 | ||
[68]: https://github.com/css-modules/css-modules/issues/68 | ||
[80]: https://github.com/css-modules/css-modules/issues/80 | ||
[suggested]: https://github.com/css-modules/css-modules/issues/80#issuecomment-155497797 | ||
[Aaron7]: https://github.com/Aaron7 |
@@ -17,3 +17,3 @@ var postcss = require('postcss'); | ||
function isSingle(selector) { | ||
function isAllowed(selector) { | ||
var result = true; | ||
@@ -93,3 +93,3 @@ selector.nodes.map(function (node) { | ||
var selector = Tokenizer.parse(rule.selector); | ||
if (!isSingle(selector)) { | ||
if (!isAllowed(selector)) { | ||
rule.nodes = getNodes([], rule, css); | ||
@@ -96,0 +96,0 @@ } |
6783
66