modulr is a CommonJS module implementation
which is does static analysis to recursively resolve its dependencies.
concatenated into a single
js file with optional minification through the YUI Compressor. This improves load times by
minimizing HTTP requests.
Further load time performance improvements are made possible by the built-in
evaluated only when required.
module free variables. In its full version, the bundled
library also provided support for the
require.ensure (async module requires) and
require.define (module transport) methods.
--global-export option is assigned the
exports of the main CommonJS module and asynchronous module requires are not supported.
modulr allows you to create handy dependency graphs.
$ [sudo] gem install modulr
modulr is available as a Ruby library or as a command-line utility (
$ modulrize filename.js > output.js
You can also simultaneously process multiples files like so:
$ modulrize filename.js other_filename.js > output.js
Options are as follows:
-o, --output=FILE Write the output to FILE. Defaults to stdout. -r, --root=DIR Set DIR as root directory. Defaults to the directory containing FILE. --lazy-eval [MODULES] Enable lazy evaluation of all JS modules or of those specified by MODULES. MODULES accepts a comma-separated list of identifiers. --minify Minify output using YUI Compressor. --global-export[=GLOBAL_VAR] If GLOBAL_VAR is specified and only one module is being processed, exports it to the GLOBAL_VAR global variable. If GLOBAL_VAR is specified and multiple modules are being processed, exports each one of them as a property of GLOBAL_VAR. If GLOBAL_VAR isn't specified, exports the module to global variables corresponding to their identifier. --main-module=MAIN_MODULE Set the identifier of the main module (available through `require.main`). --sync Load all dependencies synchronously. --dependency-graph[=OUTPUT] Create a dependency graph of the module. -h, --help Show this message.
Minification options (these are forwarded to YUI Compressor without the "minify-" prefix):
--minify-disable-optimizations Disable all micro optimizations. --minify-nomunge Minify only, do not obfuscate. --minify-verbose Display informational messages and warnings. --minify-line-break COLUMN Insert a line break after the specified column number. --minify-preserve-semi Preserve all semicolons.
To run the specs, first clone the Git repository then grab the CommonJS specs, included as a Git submodule, by running:
$ git clone git://github.com/codespeaks/modulr.git $ cd modulr $ git submodule init $ git submodule update
Mozilla's SpiderMonkey is required
js command line executable must be available on the load path (try
You can run all the specs by issuing:
$ rake spec
Alternatively, a list of comma-separated specs can be specified through the
environment variable (see
vendor/commonjs/tests/modules/1.0) for a comprehensive
list of available specs).
$ rake spec SPECS=absolute,transitive