node package manager
Don’t reinvent the wheel. Reuse code within your team. Create a free org »

globify

Globify

Run browserify and watchify with globs - even on Windows!

Build Status Windows Build Status

Coverage Status Codacy Score Inline docs Dependencies

npm License

Features

  • Supports glob patterns for entry files - even on Windows
  • Optionally create separate browserify bundles for each entry file

Related Projects

Installation

Install using npm. Add the -g flag to install globally so you can use it from any terminal.

npm install -g globify

Usage

The command-line interface is identical to browserify and watchify. In fact, globify simply passes your arguments straight to browserify or watchify (after expanding the glob pattern).

globify <entry files glob>  [options]
 
Options:
 
  <entry files glob>
 
    Glob pattern of entry files. Don't forget to wrap the glob pattern in quotes,
    otherwise some shells (like bash) will pre-expand the glob.
 
  --outfile=FILE, -o FILE
 
    If outfile is a file, then a single bundle will be created.  If it's a directory,
    then separate bundles will be created for each entry file.  You can also specify
    an output filename pattern, like *.bundled.js
 
  --exclude=GLOB, -u GLOB
 
    Excludes files that are matched by the <entry files glob>
 
  --watch, -w
 
    Call watchify instead of browserify.

Examples

For all of these examples, assume that we have a file structure like this:

lib/
 |__ my-entry-file.js
 |__ some-file.js
 |__ other-file.js
 |__ other-entry-file.js
 |__ subdir/
       |__ another-entry-file.js
       |__ another-file.js
       |__ yet-another-file.js

Multiple files in one bundle

We want to bundle all three entry files into a single bundle file. We can do that with the following command:

globify "lib/**/*-entry-file.js" --outfile=dist/my-bundle.js

Globify will call browserify once, passing it the three matching entry files and one bundle file:

browserify lib/my-entry-file.js lib/other-entry-file.js lib/subdir/another-entry-file.js --outfile=dist/my-bundle.js

Multiple files, multiple bundles

We want to create separate bundle files for each of the three entry files. We can do that with the following command:

globify "lib/**/*-entry-file.js" --outfile=dist

Globify will call browserify three times (once for each entry file), and create three corresponding bundles:

browserify lib/my-entry-file.js --outfile=dist/my-entry-file.js
browserify lib/other-entry-file.js --outfile=dist/other-entry-file.js
browserify lib/subdir/another-entry-file.js --outfile=dist/subdir/another-entry-file.js

Multiple files, multiple bundles with customized names

We want to create separate bundle files for each of the three entry files, but we weant each bundle file to have a .bundled.js suffix. We can do that with the following command:

globify "lib/**/*-entry-file.js" -o "dist/*.bundled.js"

Globify will call browserify three times (once for each entry file) and create three corresponding bundles:

browserify lib/my-entry-file.js -o dist/my-entry-file.bundled.js
browserify lib/other-entry-file.js -o dist/other-entry-file.bundled.js
browserify lib/subdir/another-entry-file.js -o dist/subdir/another-entry-file.bundled.js

Watchify, transforms, other options

Now, let's try it with watchify instead. Let's also add some extra options, and run the uglifyify transforms to minify the bundles. And let's give the bundles a .bundled.min.js suffix.

globify -g uglifyify "lib/**/*-entry-file.js" -w -v -d -o "dist/*.bundled.min.js"

Globify will call watchify (because of the -w option) three times with all of the specified options:

watchify -g uglifyify lib/my-entry-file.js -v -d -o dist/my-entry-file.bundled.min.js
watchify -g uglifyify lib/other-entry-file.js -v -d -o dist/other-entry-file.bundled.min.js
watchify -g uglifyify lib/subdir/another-entry-file.js -v -d -o dist/subdir/another-entry-file.bundled.min.js

Contributing

I welcome any contributions, enhancements, and bug-fixes. File an issue on GitHub and submit a pull request.

Building/Testing

To build/test the project locally on your computer:

  1. Clone this repo
    git clone https://github.com/BigstickCarpet/globify.git

  2. Install dependencies
    npm install

  3. Run the build script
    npm run build

  4. Run the tests
    npm test

License

Globify is 100% free and open-source, under the MIT license. Use it however you want.