Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

remapify

joeybaker847Artistic-2.02.2.0

Alias directories of files for browserify

browserify-plugin, alias, directory, rename, browserify, browser, commonjs, folder

readme

Remapify ![Gitter](https://badges.gitter.im/Join Chat.svg) NPM Build Status

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.

If remapify doesn't work for you for any reason, you might want to give aliasify or pathmodify a look.

Table of Contents generated with DocToc

Why

Suppose you've got an app structure that looks like

app
  - views
    - home
      index.js
    - people
      index.js
      _avatar.js
      _description.js
  - models
    person.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 better
  var person = require('models/person.js')

Usage

var browserify = require('browserify')
  , remapify = require('remapify')
  , b = browserify(__dirname)

b.plugin(remapify, [
  {
    src: './client/views/**/*.js' // glob for the files to remap
    , expose: 'views' // this will expose `__dirname + /client/views/home.js` as `views/home.js`
    , cwd: __dirname // defaults to process.cwd()
    , filter: function(alias, dirname, basename) { // customize file names
      return path.join(dirname, basename.replace('foo', 'bar'))
    }
  }
])

b.bundle()

options [{}]

Array of objects. Each object is one remapping.

src

Glob pattern to find the files to remap.

expose

Replace the cwd of each file in src with this value.

cwd (optional)

Specify the 'current working directory' for the glob pattern to start from and for the expose option to replace.

filter (optional)

Alter the file name on the fly. For example, if you wanted to require _avatar.js as require('avatar') you could do:

var path = require('path')
b.plugin(remapify, [
  {
    src: './**/*.js'
    , filter: function(alias, dirname, basename) {
      return path.join(dirname, basename.replace(/^\_(.*)\.js$/, '$1'))
    }
  }
]);

glob options

All options specified by the glob module can be used as well.

events

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.

b.on('remapify:files', function(file, expandedAliases, pattern){})

Emitted when all files have been found to be remapped.

  • files The files found to alias
  • expandedAliases The list of files and what they will be exposed as as found so far. Includes this file.
  • pattern The glob pattern in use.

Tests

All tests are mocha. You can run them with either npm test or mocha test. For developing, the tests can be run on file change with npm run tdd

Development

  • Git hooks are installed to make sure nothing goes to wacky.
  • TDD with npm run tdd
  • Release with npm run release
  • Testing runs eslint. You can manually run with npm run lint

Changelog

See CHANGELOG.md

changelog

Changelog

v2.2.0 | 2018-10-5

  • Updates all packages to now pass an npm audit should be a non-breaking change

v2.1.0 | 2015-11-02

  • add: now resolves index.js when no file is provided. Fixes #20. Thanks @ehynds
  • internal: Update nsp

v2.0.3 | 2015-06-24

  • docs: Add alternatives to readme

v2.0.2 | 2015-06-11

  • fix: reapply our alias map if the underlying browserify pipeline is reset. This fixes compatibility with watchify.
  • internal: update deps
  • internal: update style guide

v2.0.1 | 2015-04-19

  • unkonwn filetypes can now be aliased. #36

v2.0.0 | 2015-03-26

  • breaking: The remapify:files event no longer emits the glob instance
  • change: globbing is no longer async. Browserify updates seem to make this impossible
  • change: no longer depends on aliasify. We now just hook directly into module-deps
  • add: integration tests
  • dev: replace jshint and jscs with eslint
  • dev: add a more stream-lined release process

v1.4.4 | 2015-01-06

  • Add a test for a src with a dir #24
  • Set the configDir option of aliasify #24
  • fix travis builds

v1.4.3 | 2015-01-05

  • Fix order of test running
  • test should only run tests

v1.4.2 | 2015-01-05

  • remove gulp
  • update glob
  • many new npm scripts

1.4.1

  • More npmignoring

1.4.0

  • Updated aliasify to support jsx files.

1.3.0

  • path.join should no longer be required for cross-platform use.

1.2.0

  • better relative path handling

1.1.1

  • Tests now pass on windows again

1.1.0

  • Adds ability to filter out files from aliasing

1.0.0

  • Reworked options so that src and cwd shouldn't conflict.
  • Leaned more heavily on path for probably windows compatibility.
  • now works with other extensions (e.g. hbs)

0.1.6

Enhancement: now aliases with and without the .js extension. Allows for require('a.js') and require('a'), which are equivalent.

0.1.5

Bug fix: it was possible to not actually transform the bundle.

0.1.4

Initial release. Docs complete, tests pass, and module structure in place. This was my first use of gulp, so there's a lot of 0.0.* commits while I worked out the release process.

0.0.0

Init