raptor-optimizer-require
v1.0.4-beta
Published
RaptorJS Optimizer plugin to support Node.js style module require in the browser
Readme
raptor-optimizer-require
Plugin for the RaptorJS Optimizer that adds support for transporting Node.js-style modules to the browser.
Installation
This plugin is included as part of the raptor-optimizer module so it is not necessary to use npm install to add the module to your project. However, if you want to use a specific version of the raptor-optimizer-require plugin then you can install it using the following command:
npm install raptor-optimizer-require --saveUsage
This plugin is enabled by default, but if you want to provide your own configuration then you can do that using code similar to the following:
require('raptor-optimizer').configure({
plugins: {
'raptor-optimizer-require': {
transforms: [ // Browserify compatible transforms
'deamdify'
] // See https://github.com/substack/node-browserify/wiki/list-of-transforms
}
}
})The raptor-optimizer-require plugin introduces two new dependency types that you can use to target Node.js modules for the browser. There usage is shown in the following optimizer.json file:
{
"dependencies": [
"require: jquery",
"require-run: ./main"
]
}These new dependency types are described in more detail below.
Dependency Types
require
The require dependency type will wrap a Node.js module for delivery to the browser and allow it to be required from another module. For example:
Input modules:
foo.js:
exports.add = function(a, b) {
return a + b;
}bar.js:
var foo = require('./foo');
exports.sayHello = function() {
console.log('Hello World! 2+2=' + foo.add(2, 2));
};Output Bundles:
After running the following command:
raptor-optimizer require:./foo require:./bar --name testThe output written to static/test.js will be the following:
$rmod.def("/foo", function(require, exports, module, __filename, __dirname) { exports.add = function(a, b) {
return a + b;
} });
$rmod.def("/bar", function(require, exports, module, __filename, __dirname) { var foo = require('./foo');
exports.sayHello = function() {
console.log('Hello World! 2+2=' + foo.add(2, 2));
}; });NOTE: $rmod is a global introduced by the client-side Node.js module loader. It should never be used directly!. The code that declares $rmod is not shown in the output above for brevity.
require-run
In the previous examples, neither the foo.js or bar.js module will actually run. The require-run dependency type should be used to make a module self-executing. This is the equivalent of the entry point for your application when loaded in the browser.
Continuing with the previous example:
Input modules:
foo.js (see above)
bar.js (see above)
main.js:
require('./bar').sayHello();Output Bundles:
After running the following command:
raptor-optimizer require-run:./main --name testAlternatively:
raptor-optimizer --main main.js --name testThe output written to static/test.js will be the following:
$rmod.def("/foo", function(require, exports, module, __filename, __dirname) { exports.add = function(a, b) {
return a + b;
} });
$rmod.def("/bar", function(require, exports, module, __filename, __dirname) { var foo = require('./foo');
exports.sayHello = function() {
console.log('Hello World! 2+2=' + foo.add(2, 2));
}; });
$rmod.run("/main", function(require, exports, module, __filename, __dirname) { require('./bar').sayHello(); });