grunt-bem

bem make

grunt-bem

Run bem make using BEM API.

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');

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. 
        }
    }
})

Type: String Default value: bem

Path to require BEM library.

Type: String Default value: .

Project root (cwd by default).

Type: String Default value: make

Method to run.

Type: Integer Default value: 10

Run number of workers.

Type: Boolean Default value: False

Force rebuild.

Type: String Default value: info

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

Type: String Default value: target's name

Build targets.

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'
        }
    }
})

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'
        },
    }
})
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']);

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.

  • 2013-02-20 v0.1.0 First official release.