Bem
Ruby library for working with BEM(http://bem.info/) in rails projects.
Installation
Add this line to your application's Gemfile:
gem 'bem'
And then execute:
$ bundle
Or install it yourself as:
$ gem install bem
Then you must create config file:
$ rails g bem:install
And spring config file if you want to use bem command with spring
as spring bem create
$ rails g bem:spring
After that stop spring
$ spring stop
And now you can use command spring bem create
instead of just bem create
. spring
command significantly increase speed of blocks creation.
Usage
You can create blocks, elements, modificators, levels and manifests with command bem create
This command create structure like that
levelname
block-name
__element-name
_mode-name.scss
block-name__element-name_mod-name_value.scss
block-name__element-name.scss
_mod-name
block-name_mod-name_value.scss
block_name.css.sass
Which is exactly the same as shown here http://bem.info/tools/bem/bem-tools/levels/
It accepts these options:
Options:
-b, [--block=BLOCK] # Create or use given block.
-e, [--element=ELEMENT] # Create or use given element.
-m, [--modificator=MODIFICATOR] # Create modificator.
-v, [--value=VALUE] # Value for modificator.
-l, [--level=LEVEL] # Create or use given level.
-a, [--manifest=MANIFEST] # Manifests to append level
-j, [--js], [--no-js] # Do create assets with javascripts
# Default: true
-s, [--css], [--no-css] # Do create assets with stylesheets
# Default: true
It will automatically include appropriate information in corresponding levels and manifests. For adjust technologies and css directives use config/initializers/bem.rb
For detail information about this command:
$ bem help create
For destroy blocks, elements, modificators, levels and manifests use command bem destroy
. It makes undo of bem create
command. It accepts these options:
Options:
-b, [--block=BLOCK] # Destroy or use given block.
-e, [--element=ELEMENT] # Destroy or use give element.
-m, [--mod=MOD] # Destroy modificator.
-v, [--value=VALUE] # Value for modificator.
-l, [--level=LEVEL] # Destroy or use given level.
-a, [--manifest=MANIFEST] # Manifests to append level
For detail information about this command:
$ bem help destroy
This application https://github.com/gkopylov/bem_with_rails_and_less_example_app was created for demonstrate of using this gem.
Contributing
- Fork it ( http://github.com//bem/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request