brbower

    0.3.2 • Public • Published

    brbower

    NPM

    Let brbower plugin require bower components for you when building bundles, then you can require them as normal node modules in application codes.
    You can also provide external config, to guide brbower to external some bower components, which is useful when when building multiple bundles.

    install

    With npm do:

    npm install brbower
    

    usage

    In your task runner like gulp, add this plugin to browserify:

    b.plugin('brbower', {
        require: ['*', 'base62/lib/base62'],
        external: {
            exclude: ['comp1', 'comp2']
        }
    });

    p.s. of course, you can also configure this in node package.json.

    Then, in js or html codes, you can require it like normal node module:

    // in xxx.js
    var comp1 = require('comp1');
    var comp2 = require('alias2');
    ...
    
    // in xx.html
    <div class="container-fluid">
    ...
    </div>
    <script type="text/javascript">
      require('domready')(function() {
        var comp1 = require('comp1');
        ...
      });
    </script>
    

    p.s. feel free to use it side by other plugins/transforms, since it's a standard browerify plugin, no hack, no change to your codes.

    options

    brbower config

    action: string, guide brbower to require/external specified bower components; available values: require | external, default require

    action config: string array or map object, available config items: include | exclude | alias, examples:
    a) ['name1', 'name2', ...] (p.s. will be treated as { include: [name1, name2, ...] })
    b) { exclude: ['comp5', 'comp7'], alias: ['comp1:alias1'] }

    Notes: name format: name[:alias], and name can be component name or submodule like 'base62/lib/base62'.

    Additional Rules:

    • if options undefined, { require: [all bower dependency names] } will be used
    • if options..include undefined, [all bower dependency names] will be used
    • if both include/exclude and alias declared an alias for a component, declaration in alias will be used

    run test

    You need ensure related node modules (for brbower) and bower components (for test codes) installed, then run npm test.

    For first time, you can do it like this:

    tminglei@T500 ~/repos/brbower $ npm install
    ...
    tminglei@T500 ~/repos/brbower $ cd test
    tminglei@T500 ~/repos/brbower/test $ bower install
    ...
    tminglei@T500 ~/repos/brbower/test $ cd ..
    tminglei@T500 ~/repos/brbower $ npm test
     
        > brbower@0.2.1 test ~/repos/brbower
        > mocha
     
     
          ....
     
          4 passing (580ms)
     
    tminglei@T500 ~/repos/brbower $

    diffenence with debowerify

    brbower and debowerify try to resolve same problem, but by different ways.
    (p.s. in fact, brbower's test codes were copied and modified from debowerify, thanks so much ^^)

    debowerify's way: analyze every js files of the application, to find/replace require string for bower components with their real paths
    brbower's way: pre resolve specified bower components and require them to browserify, then when required, they're already there

    Comparison of brbower and debowerify:

    brbower debowerify
    require submodules
    (in application codes)
    support
    (built-in)
    support
    (built-in)
    require ... in html/template files OK not OK
    (since it doesn't anaylze html/template files)
    individual require/external
    (in build scripts)
    easy
    (with options)
    not so easy
    (through bower-resolve)
    extension type plugin transform
    work mode synchronous asynchronous
    (since it depends on bower's resolving results)
    performance slight and quickly
    (~ 2s to build a project of mine)
    slowly
    (13 ~ 14s to build the same project)
    (since it analyzes every js files of the application)

    history

    v0.3.0 (14-Aug-2014):

    1. built-in support for submodules
    2. enhancement: if bower.main undefined, check 'index.js' then 'compname'.js

    v0.2.0 (25-July-2014):

    1. added tests
    2. document improvement
    3. logic change: include all components declared in dependencies and devDependencies of bower.json, not only dependencies, if options..include undefined
    4. enhancement: allow to specify workdir, where to determine bower components' home dir; default process.cwd()

    v0.1.0 (22-July-2014):

    1. first release (works fine in my personal project)

    license

    MIT

    Install

    npm i brbower

    DownloadsWeekly Downloads

    3

    Version

    0.3.2

    License

    MIT

    Last publish

    Collaborators

    • tminglei