Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

bem-pack

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

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

  • 0.1.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
2
Maintainers
1
Weekly downloads
 
Created
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

Package last updated on 28 Aug 2014

Did you know?

Socket

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
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc