pobems
v0.3.3
Published
BEM syntax for CSS
Readme
BEM syntax for CSS. Problems? Use POBEMS!
This is old version! Please using pobem (next step development pobems)
This is plugin based on rebem-css written by Kir Belevich and Denis Koltsov.
Overview
Dead simple
It just replaces substrings in selectors:
:block()
:block(block) {}
.block {}:elem()
:block(block):elem(elem) {}
.block__elem {}
:block(block):elem(elem) :elem(elem2) :block(block2):elem(elem) {}
.block__elem .block__elem2 .block2__elem {}:mod()
:block(block):mod(mod) {}
.block_mod {}
:block(block):mod(mod val) {}
.block_mod_val {}
:block(block):mod(mod val):mod(mod2) {}
.block_mod_val.block_mod2 {}:block(block):elem(elem):mod(mod) {}
.block__elem_mod {}
:block(block):elem(elem):mod(mod val) {}
.block__elem_mod_val {}CSS compatible
It's just a custom pseudo-classes, so you can use it with Less or any other CSS preprocessor:
:block(block) {
&:mod(mod) {
:elem(elem) {
}
}
&:elem(elem) {
&:mod(mod val) {
}
}
}Usage
pobems is a PostCSS plugin.
CLI
npm i -S postcss postcss-cli pobemspostcss --use pobems test.css -o test.cssAPI
npm i -S postcss pobemsimport postcss from 'postcss';
import pobems from 'pobems';
console.log(
postcss([ pobems ]).process(':block(block) {}').css
);
// .block {}webpack
npm i -S postcss postcss-loader pobemsimport pobems from 'pobems';
export default {
module: {
loaders: [
{
test: /\.css$/,
loader: 'style!css!postcss'
}
]
},
postcss() {
return [ pobems ];
}
};Custom delimeters
Default delimeters are _ for modifiers and __ for elements, but you can change it with special environment variables. For example in webpack you can do this with DefinePlugin:
plugins: [
new webpack.DefinePlugin({
'process.env': {
BEM_MOD_DELIM: JSON.stringify('--'),
BEM_ELEM_DELIM: JSON.stringify('~~')
}
})
]