Alias directories of files for browserify
A Browserify plugin to map whole directories as different directories to browserify. This is useful if you have a common batch of files that you don't want to have to refer to relatively all the time.**Table of Contents** *generated with [DocToc](http://doctoc.herokuapp.com/)*
Suppose you've got an app structure that looks like
app- views- homeindex.js- peopleindex.js_avatar.js_description.js- modelsperson.js
// _avatar.js// this gets really old after a while, and is prone to breaking if you change the directory hiearchy.var person = require'../../models/person.js'// This is much bettervar person = require'models/person.js'
var browserify = require'browserify'remapify = require'remapify'b = browserify__dirnamebpluginremapifysrc: './client/views/**/*.js' // glob for the files to remapexpose: 'views' // this will expose `__dirname + /client/views/home.js` as `views/home.js`cwd: __dirname // defaults to process.cwd()// customize file namesreturn pathjoindirname basenamereplace'foo' 'bar'bbundle
Array of objects. Each object is one remapping.
Glob pattern to find the files to remap.
cwd of each file in
src with this value.
Specify the 'current working directory' for the glob pattern to start from and for the
expose option to replace.
Alter the file name on the fly. For example, if you wanted to require
require('avatar') you could do:
var path = require'path'bpluginremapifysrc: './**/*.js'return pathjoindirname basenamereplace/^\_\.js$/ '$1';
All options specified by the glob module can be used as well.
Remapify will emit events while processing. This is implemented to make testing easier, but… maybe it'll be useful for other things. The events are emitted on the bundle.
Emitted when the globbing finds a file to remap.
fileThe path to the file
expandedAliasesThe list of files and what they will be exposed as as found so far. Includes this file.
globberThe full glob instance.
patternThe glob pattern in use.
Emitted when all files have been found to be remapped.
The arguments are the same as above.
All tests are mocha. You can run them with either
npm test or
- Git hooks are installed to make sure nothing goes to wacky.
- TDD with
npm run tdd
- Release with
npm run release
- Testing runs jscs and jshint. You can manually run with
npm run lint