grunt-bem

bem make

npm install grunt-bem
3 downloads in the last day
7 downloads in the last week
22 downloads in the last month

grunt-bem Build Status

Run bem make using BEM API.

Getting Started

This plugin requires Grunt ~0.4.0

If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:

npm install grunt-bem --save-dev

One the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:

grunt.loadNpmTasks('grunt-bem');

The "bem" task

Overview

In your project's Gruntfile, add a section named bem to the data object passed into grunt.initConfig().

grunt.initConfig({
    bem: {
        options: {
            // Task-specific options go here.
        },
        target: {
            // Target-specific options go here.
        }
    }
})

Options

options.require

Type: String Default value: bem

Path to require BEM library.

options.root

Type: String Default value: .

Project root (cwd by default).

options.method

Type: String Default value: make

Method to run.

options.workers

Type: Integer Default value: 10

Run number of workers.

options.force

Type: Boolean Default value: False

Force rebuild.

options.verbosity

Type: String Default value: info

Verbosity level (silly, verbose, info, warn, debug, error).

options.targets, target

Type: String Default value: target's name

Build targets.

Usage Examples

Default Options

In this example, the default options are used to do build target all in the level bem-project. BEM is installed as a global package.

grunt.initConfig({
    bem: {
        all: {
            root: 'bem-project'
        }
    }
})

Custom Options

In this example, custom options are used to do build targets desktop.bundles and touch.bundles. BEM is installed as a local package.

grunt.initConfig({
    bem: {
        options: {
            require: 'bem-project/node_modules/bem',
            root: 'bem-project'
        },
        'desktop.bundles touch.bundles': {
            verbosity: 'warn'
        },
    }
})

Advanced Example

grunt.initConfig({
    watch: {
        bem: {
            files: ['bem-project/*.bundles/*/*.bemjson.js'],
            tasks: ['bem:bundles'],
            options: {
                interrupt: true
            }
        }
    },
    bem: {
        options: {
            require: 'bem-project/node_modules/bem',
            root: 'bem-project',
            verbosity: 'warn'
        },
        'bundles': {
            targets: 'desktop.bundles touch.bundles'
        },
        'bundles-forced': {
            targets: 'desktop.bundles touch.bundles',
            forced: true
        }
    }
});

grunt.registerTask('default', ['bem:bundles-forced']);

Contributing

In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using Grunt.

Release History

  • 2013-02-20 v0.1.0 First official release.
npm loves you