- Supports glob patterns for entry files - even on Windows
- Optionally create separate browserify bundles for each entry file
- simplifyify - A simplified Browserify and Watchify CLI
- sourcemapify - Sourcemap plugin for Browserify
Install using npm. Add the -g
flag to install globally so you can use it from any terminal.
npm install -g globify
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.
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
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
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
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
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
I welcome any contributions, enhancements, and bug-fixes. File an issue on GitHub and submit a pull request.
To build/test the project locally on your computer:
-
Clone this repo
git clone https://github.com/BigstickCarpet/globify.git
-
Install dependencies
npm install
-
Run the build script
npm run build
-
Run the unit tests
npm run mocha
(just the tests)
npm test
(tests + code coverage)
Globify is 100% free and open-source, under the MIT license. Use it however you want.