Bower components builder for Grunt
Automatic concatenation of installed Bower components (JS and/or CSS) in the right order.
Installation
This plugin requires Grunt 0.4.
$ npm install grunt-bower-concat --save-dev
Configuration
Add somewhere in your Gruntfile.js
:
grunt;
Inside your Gruntfile.js
file add a section named bower_concat
. See Parameters section below for details.
Options
separator
Type: String
Default: grunt.util.linefeed
Concatenated files will be joined on this string. If you're post-processing concatenated JavaScript files with a minifier, you may need to use a semicolon ';\n' as the separator. Separator is only applied to concatenated JS files.
options: { separator : ';' }
Parameters
dest
Type: Object
, required. Defines the filetypes to be concatenated into a destination file.
Where the key is the file extension (without the dot) and the value is the destination file.
E.g:
dest: {
js: 'build/_bower.js',
scss: 'build/_bower.scss,
coffee: 'build/_bower.coffee
}
Also this version still supports this field to be a String, but this is deprecated:
(Deprecated) Type: String
, defines into which file all .js files should be concatenated.
Name of JS file where result of concatenation will be saved.
exclude
Type: String|Array
, optional.
List of components you want to exclude.
exclude: 'jquery' 'modernizr'
include
Type: String|Array
, optional.
By default bower-concat will include all installed in project components. Using include
option you can manually specify which components should be included.
include: 'underscore' 'backbone'
dependencies
Type: Object
, optional.
Unfortunately not all Bower components list their dependencies. If components concatenate in the wrong order, use this option to manually specify dependencies for those components.
dependencies: 'underscore': 'jquery' 'mygallery': 'jquery' 'fotorama'
mainFiles
Type: Object
, optional.
Some Bower components don’t list their main files or (more likely) don’t have bower.json
file at all. In this case bower-concat
will try to guess main file but sometimes it can’t or choose wrong one. You could explicitly define main files for that components.
mainFiles: 'svg.js': 'dist/svg.js' 'mygallery': 'src/base.js' 'src/gallery.js' 'src/style.css'
callback
Type: Function
, optional.
This function will be called for every Bower component and allows you to change main files chosen by bower-concat
.
{ return _;}
process
Type: Function
, optional.
This function will be called for every Bower component and allows you to change the contents of every file.
{ // wrap each library in a self executing function with "use strict" return "\n" + ";(function( window, jQuery, angular, undefined ){ \n 'use strict';\n\n" + src + "\n\n}( window, jQuery, angular ));";}
bowerOptions
Type: Object
, optional.
Bower specific options that will be passed in during the bower.commands
calls.
bowerOptions: relative: false
includeDev
Type: Boolean
, default: false
.
Include devDependencies
along with regular dependencies
.
Config Example
bower_concat:all:dest: 'build/_bower.js'cssDest: 'build/_bower.css'exclude:'jquery''modernizr'dependencies:'underscore': 'jquery''backbone': 'underscore''jquery-mousewheel': 'jquery'bowerOptions:relative: false
Changelog
The changelog can be found on the Releases page.
License
The MIT License, see the included License.md file.