2.2.0 • Published 9 years ago

laravel-elixir-bowerbundle v2.2.0

Weekly downloads
13
License
MIT
Repository
github
Last release
9 years ago

laravel-elixir-bowerbundle Dependencies Status Build Status Coverage Status

Concatenates and publishes Bower dependencies as configurable bundles of .css and .js files.

This is a plugin for Laravel's Elixir build tool and provides the bower() method.

elixir(function (mix) {

  // Create a single bundle.js file that contains jQuery and a couple
  // of plugins. Simply include bundle.js somewhere on your page and
  // it works - no shims, no need for multiple require()s
  mix.bower(['jquery', 'jquery-touchswipe', 'Scrollify']);

  // Save the concatenated files somewhere other than the default
  // location by passing a second argument. If you're creating
  // multiple bundles, you'll need this.
  mix.bower(['jquery', ...], 'public/vendor/bower.js');

  // What about packages that include CSS? Not a problem, it just works.
  // All stylesheets used in the named packages are concatenated together
  // to a single bundle.css file, much like the javascript.
  mix.bower(['jquery', 'leaflet']);
  // Even images and fonts are automatically published alongside the
  // css and js, assuming the package lists them as `main` files. And
  // if it doesn't, see "Specify which files you want from a package" below.

  // Don't like the idea of mixing your list of dependencies with your
  // build logic? You can use bower.json to store your bundle compositions, e.g.
  // {
  //    "bundles": {
  //      "frontend": ["jquery", "lodash"],
  //      "admin": ["angular", "angular-ui-router", "d3"]
  //    }
  // }
  // then call .bower() with a named bundle
  mix.bower('frontend');
  // or call without arguments to publish all the defined bundles
  mix.bower();

});

Install from npm

npm install laravel-elixir-bowerbundle --save

Usage

// gulpfile.js
var elixir = require('laravel-elixir');
require('laravel-elixir-bowerbundle');

elixir(function(mix) {
  mix.bower(['jquery', 'lodash']);
});
Specify which files you want from a package

Bower packages have a bower.json file with a "main" property. This is how we know which files from each package should be included in the bundle. You can override this in your own bower.json with an "overrides" property.

Example: the bootstrap bower package lists bootstrap.less as one of its main files. To get the compiled CSS instead, override the "main" property for the "bootstrap" package.

{
  "overrides": {
    "bootstrap": {
      "main": [
        "dist/css/bootstrap.css",
        "dist/js/bootstrap.js"
      ]
    }
  }
}
Use your own build pipeline

Is the standard mix.bower() task not quite right for you? You can still use this package to fetch the list of files for a bundle, then pass them to gulp.src() in your own custom gulp task. For example:

// gulpfile.js
var elixir = require('laravel-elixir');
var bundle = require('laravel-elixir-bowerbundle');
var gulp   = require('gulp');

// Use elixir as normal, remembering to call your custom task
elixir(function (mix) {
  mix.task('customBowerTask')
     // ...
});

// Define your custom task
gulp.task('customBowerTask', function () {

  // Pass an array of package names to the bundle factory function,
  // then get the file list with .all(). You can also use .css(),
  // .js() or .misc() to get files of a certain type.
  var files = bundle(['jquery']).all();

  return gulp.src(files)
             .pipe()
              // ...
});

Contributing

All contributions welcome.

License

MIT

2.2.0

9 years ago

2.1.3

9 years ago

2.1.2

9 years ago

2.1.1

10 years ago

2.1.0

10 years ago

2.0.0

10 years ago

1.0.1

10 years ago

1.0.0

10 years ago

0.2.1

10 years ago

0.2.0

10 years ago

0.1.1

10 years ago

0.1.0

10 years ago