raptor-optimizer-require

1.0.4-beta • Public • Published

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 --save

Usage

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 test

The 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 test

Alternatively:

raptor-optimizer --main main.js --name test

The 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(); });

Package Sidebar

Install

npm i raptor-optimizer-require

Weekly Downloads

49

Version

1.0.4-beta

License

Apache License v2.0

Last publish

Collaborators

  • mlrawlings
  • austinkelleher
  • pnidem
  • philidem