Not a Propaganda Machine
    Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    bower-requirejspublic

    This package has been deprecated

    Author message:

    Deprecated

    bower-requirejs Build Status

    Automagically wire-up installed Bower components into your RequireJS config

    Install

    $ npm install --save bower-requirejs

    Usage

    ./node_modules/.bin/bower-requirejs -c path/to/config.js -e underscore -e jquery

    Options

    -h, --help              # Print options and usage'
    -v, --version           # Print the version number'
    -c, --config            # Path to your RequireJS config file'
    -e, --exclude           # Name of a dependency to be excluded from the process'
    -b, --base-url          # Path which all dependencies will be relative to'
    -t, --transitive        # Process transitive dependencies'
    -s, --shim              # Shim dependencies'
    -d, --exclude-dev       # Exclude devDependencies'

    Using Bower Hooks

    Bower >=v1.3.1 includes hooks for preinstall, postinstall and preuninstall actions. To run grunt-bower-requirejs after every bower install, add a scripts block to your .bowerrc.

    {
      "scripts": {
        "postinstall": "bower-requirejs -c path/to/config.js"
      }
    }

    Things to remember

    Config file

    If you do not already have a config.js file at the location specified by the --config option then one will be generated for you. A basic config.js file looks like this:

    requirejs.config({
      shim: {},
      paths: {}
    });

    You still need to create a path for your js files. This tool will only create paths for third party libraries specified in bower.json.

    requirejs.config({
      shim: {},
      paths: {
        myComponent: 'js/myComponent.js'  // make sure to add your components! 
      }
    });

    The tool does not overwrite the config file, it just adds additional paths to it. So paths you add will be preserved. Keep in mind that if you change or remove one of your Bower dependencies after you've run the task, that path will still exist in the config file and you'll need to manually remove it.

    Transitive option

    If the transitive option is set to true, then transitive dependencies will be also added to the require config.

    For example, say we explicitly have an entry in our bower config for module myTotallyCoolModule, which depends on jQuery and underscore. If the transitive option is set to true, there will be config entries for myTotallyCoolModule, jQuery, and underscore. Otherwise, if the transitive option is set to false, there will only be a config entry for myTotallyCoolModule.

    Each transitive dependency is only included once, even if the dependency is used multiple times.

    exclude-dev option

    If the exclude-dev option is set to true, then dev-dependencies will not be added to the require config.

    RequireJS component

    Package Support

    If a dependency's moduleType is set to node in bower.json it will be treated as a CommonJS Package.

    The following bower.json file:

    {
      "name": "node-module-type-stub",
      "version": "0.0.1",
      "moduleType": ["node"],
      "main": "myMain.js"
    }

    Will generate this entry in your config.js file:

    require.config({
      shim: {},
      packages: [
        {
          name: 'node-module-type-stub',
          main: 'myMain.js'
        }
      ],
      paths: {}
    });

    Overriding the main file of a dependency

    You can override the main file of a given dependency by specifying the overrides.{dependency}.main property in your bower.json file:

    {  
      "overrides": {
         "jquery": {
           "main": "jquery.min.js"
         },
         "anima": {
           "main": "anima.min.js"
         }
       }
     }

    The file path is relative to the dependency folder

    Programmatic API

    bowerRequireJS(options, callback)

    • options — An options object containing optional config, baseUrl, and exclude options. The config option specifies an output file to which the generated require.js config will be written. If a require.js config file already exists at this location, the generated config will be merged into this file.
    • callback — A callback to execute when the task is finished. This callback will receive an object that contains the require.js configuration generated from bower components. Note that this includes only config elements representing bower components.

    You can use bower-requirejs directly in your app if you prefer to not rely on the binary.

    var bowerRequireJS = require('bower-requirejs');
     
    var options = {
      config: 'scripts/config.js',
      exclude: ['underscore', 'jquery'],
      transitive: true
    };
     
    bowerRequireJS(options, function (rjsConfigFromBower) {
      // all done! 
    });

    parse(pkg, name, baseUrl)

    • pkg — A package object returned from bower list
    • name — The name of the package
    • baseUrl — A baseUrl to use when generating the path

    If you would like to just receive a paths object you can do so with the parse module. If your package does not contain a bower.json file, or if the bower.json does not contain a main attribute then the parse module will try to use the primary module to find a primary, top-level js file.

    var bower = require('bower');
    var _ = require('lodash');
    var parse = require('bower-requirejs/lib/parse');
     
    var baseUrl = './';
     
    bower.commands.list()
      .on('end', function (data) {
        _.forOwn(data.dependencies, function (pkg, name) {
          if (name == 'jquery') {
            var pathObj = parse(pkg, name, baseUrl);
          }
        });
      });

    primary(name, canonicalDir, opts)

    • name — The package name
    • canonicalDir — The canonicalDir for the package, either returned by bower list or passed in manually
    • opts — Use the opts.extraSearchDirs to specify other dirs to search, relative to the canonicalDir. By default this is ['dist'].

    If you just want to look for the js file in a bower component's top-level directory or 'dist' directory you can use the primary module. The primary module will exclude gruntfiles and min.js files. It will also check if package.json specifies a main js file.

    var primary = require('bower-requirejs/lib/primary');
     
    var name = 'backbone';
    var dep = { canonicalDir: './bower_components/backbone' };
     
    var primaryJS = primary(name, dep);
    // returns backbone.js 

    buildConfig(bowerDependencyGraph, options)

    • bowerDependencyGraph — A bower dependency graph, as returned by a call to bower.commands.list
    • options — An object containing baseUrl, exclude, and transitive options, as described above.

    This module can be used to generate a requireJs config elements from bower components.

    var buildConfig = require('bower-requirejs/lib/build-config');
     
    bower.commands.list({})
    .on('end', function (dependencyGraph) {
      var configElementsFromBower = buildConfig(dependencyGraph, {
        baseUrl : '/some/base/url',
        exclude: ['underscore', 'jquery'],
        transitive: true
      });
    });

    Credit

    Sindre Sorhus Rob Dodson
    Sindre Sorhus (creator) Rob Dodson (maintainer)

    License

    BSD license and copyright Google

    install

    npm i bower-requirejs

    Downloadslast 7 days

    1,300

    version

    1.2.0

    license

    BSD-2-Clause

    repository

    github.com

    last publish

    collaborators

    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar