gulp-bower-builder
v0.2.0
Published
Gulp plugin for configurable building of front-end libraries from Bower dependencies
Downloads
18
Readme
gulp-bower-builder
Gulp plugin for configurable building of front-end libraries from Bower dependencies.
Usage example
You can play with it in example/
directory.
var gulp = require('gulp'),
closureCompiler = require('gulp-closure-compiler'),
buildBowerLibraries = require('gulp-bower-builder'),
minifyCss = require('gulp-minify-css'),
path = require('path');
gulp.task('build-libs', function() {
return buildBowerLibraries({
bowerDir: 'bower_components/',
destDir: 'out/js/', // default destination of generated libs
libs: [
{from: {'html5shiv/dist/html5shiv-printshiv.min.js': {}}},
{from: {'js-cookie/src/js.cookie.js': {minify: true}}},
{from: {'chosen/chosen.jquery.js': {
name: 'jquery.chosen', minify: true
}}},
{
from: {'chosen/chosen.css': {name: 'jquery.chosen', minify: true}},
destDir: 'out/css/jquery.chosen/', // overwrites default destination
copyFiles: {
src: 'chosen/chosen-sprite*.png',
base: 'chosen/'
}
},
{
fromDir: 'webshim/js-webshim/minified/', // relative to bowerDir
from: {'polyfiller.js': {}},
copyFiles: {
src: 'shims/**/*.*',
base: 'shims/',
destDir: 'shims/' // relative to already defined destDir
}
},
{from: {
'jquery/dist/jquery.min.js': {},
'jquery-dataset/jquery.dataset.js': {minify: true}
}},
{
fromDir: 'jquery-ui/ui/minified/',
from: {
'core.min.js': {prefix: 'jquery-ui-', skipVer: true},
'widget.min.js': {skipVer: true},
'mouse.min.js': {skipVer: true},
'position.min.js': {skipVer: true},
'draggable.min.js': {skipVer: true},
'resizable.min.js': {skipVer: true},
'button.min.js': {skipVer: true},
'dialog.min.js': {}
}
},
{from: {
'better-dom/dist/better-dom.min.js': {},
'better-i18n-plugin/dist/better-i18n-plugin.js': {
name: 'i18n-plugin', minify: true
},
'better-dateinput-polyfill/dist/better-dateinput-polyfill.js': {
name: 'dateinput-polyfill', minify: true, skipVer: true
},
'better-dateinput-polyfill/i18n/better-dateinput-polyfill.ru.js': {
name: 'ru', minify: true
}
}}
],
minifier: {
js: function(filePath) { // default is uglify()
return closureCompiler({
compilerPath: 'bower_components/closure-compiler/compiler.jar',
fileName: path.basename(filePath),
compilerFlags: {compilation_level: 'SIMPLE_OPTIMIZATIONS'}
});
},
css: function() { // default is gulp-minify-css
return minifyCss({restructuring: false});
}
}
});
});
produces next compressed files
$ tree out
out
├── css
│ └── jquery.chosen
│ ├── chosen-sprite.png
│ ├── [email protected]
│ └── jquery.chosen.1.5.1.css
└── js
├── better-dom.2.1.4,i18n-plugin.1.0.3,dateinput-polyfill,ru.1.5.2.js
├── html5shiv-printshiv.3.7.3.js
├── jquery-ui-core,widget,mouse,position,draggable,resizable,button,dialog.1.11.4.js
├── jquery.1.11.3,jquery.dataset.1.2.0.js
├── jquery.chosen.1.5.1.js
├── js.cookie.2.0.4.js
├── polyfiller.1.15.10.js
└── shims
├── FlashCanvas
│ ├── canvas2png.js
│ ├── flashcanvas.js
│ └── flashcanvas.swf
... and other copied files