Socket
Socket
Sign inDemoInstall

bem-pack

Package Overview
Dependencies
142
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    bem-pack

Pack node-style source files from a stream of path's into a browser bundle


Version published
Weekly downloads
3
increased by200%
Maintainers
1
Install size
12.2 MB
Created
Weekly downloads
 

Readme

Source

bem-pack

NPM version Build Status Coverage Status Dependency Status

Pack node-style source files from a stream of path's into a browser bundle with require layering support.

Note: This plugin is highly sensitive to order, in which you call add method.

Usage

var bempack = require('bem-pack');
var pack = bempack();

pack.add('base/base.js');
    .add('main/base.js');
    .bundle(function (err, buf) {
        console.log(buf.toString());
    });

Require layering

This feature is really handy, when you want to achieve flexible extension of javascript files, that not exported in modules. In normal world to extend some base module you possible create myBase module and require base constructor from myBase constructor:

// base.js
module.exports = 'base';

// myBase.js
module.exports = require('./base.js') + ' extended!';

But in BEM world you have same filename for javascript file in different layers of definition (or directoires):

// base/base.js
module.exports = 'base';

// site/base.js
module.exports = require('./base.js') + ' extended!';

As you can see, snippet above will not work properly, because you should fix the path of the require call. Ofter there is no way to do this, because order of layers can change eventually. So we come up with this idea:

Every bundled file will "export" module with it BEM identifier.

For example base__elem.js will export base__elem module, that can be required in next bundled javascript file:

// base/base.js
module.exports = 'base';

// site/base.js
module.exports = require('base') + ' extended!';

This is not stable way of doing layered requires, but it seems nice and simple to implement.

API

bem-pack([options])

Returns instance of browserify with additional step added to deps pipeline.

options

All options are passed to browserify constructor, except ignoreMissing is setted to true always.

naming

Type: Function

Function, that will generate some kind of export name for given path. By default we split filename by . and take first part. For our usage cases it will contain BEM identificator.

License

MIT (c) 2014 Vsevolod Strukchinsky

Keywords

FAQs

Last updated on 28 Aug 2014

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc