tagify

Browserify middleware for embedded compilation options

Browserify middleware for embedded compilation options.

Thanks to specific tags placed in your code you can take control on your bundle : add aliases, ignore modules, modify on the fly the code, and so on..

Tagify comes ad-hoc with two handy tags, alias and ignore : see below how to use them..

Installation

$ npm install tagify

Compatibility

tagify is compatible with brwoserify v1.

Usage

Tagify is a browserify middleware :

var b = require('browserify')();
b.use(require('tagify'))

And then throw tags in your code :

//@browserify-tag {OPTIONS} 
var d = function() .....
//@browserify-ignore 
var fs = require('fs');

Placed in front of a require statement, the required module will be added to the list of ignored modules. Here it actually does b.ignore('fs').

//@browserify-ignore -c 
var fs = require('fs');

Using ignore with the -c or --comment option will comment the require statement in the bundle. Here we'll get :

//@browserify-ignore -c 
//var fs = require('fs'); 

This tag is an extension of node-ignorify.

//@browserify-alias fs-shim 
var fs = require('fs');

Placed in front of a require statement, the required module will be aliased with the module whose name is placed in parameters of the tag. Here it actually does b.alias('fs', 'fs-shim').

//@browserify-alias -r fs-shim 
var fs = require('fs');

Using alias with the -r or --replace option will hard replace the required module with the alias module instead of doing an alias. Here we'll get in the final bundle:

//@browserify-alias -r fs-shim 
var fs = require('fs-shim');

And fs-shim and its dependencies will of course be bundled instead of fs.

This tag is an extension of node-aliasify.

A handler is a function associated to a tag and that will be called each time the parser hits the tag. A handler is in charge to decide what to do with parameters of the tags, the source code, the bundle and so on..

I could write documentation about handler, but.. just look at how alias and ignore handlers are written.

Then, to use your handler:

var myHandler = function() {
};
b.use(require('tagify').handlers({
  'mytag' : myHandler
}));

Like other pre-compilers, tagify has a kind of flags support..

I'll talk about that later, but that looks like that :

//@browserify-alias[shim1] fs-shim1 
//@browserify-alias[shim2] fs-shim2 
var fs = require('fs');
b.use(require('tagify').flags(['shim1']));

Tested with browserify ~v1.16

$ npm test

MIT