cram
Version:
An AMD-compatible build tool.
78 lines (57 loc) • 2.4 kB
Markdown
```js
var cram = require('cram');
```
cram.js can be run as a node module and returns a very simple API:
```js
var promise = cram(options);
```
The `cram` function-module takes an object argument that has similar properties
as the [options](options.md) `cram` allows on the command line:
* `grok`: a string indicating an HTML or JavaScript file to auto-configure.
It uses the same code inference algorithm as the command line
[](options.md
feature.
* `appRoot`: a string representing the path of the root of the application
files. This would typically point at the same directory as `baseUrl` in
your AMD config. This option is unnecessary if you specify a `grok`
parameter that references an HTML file.
* `configFiles`: an array of JSON-formatted files containing AMD configurations.
These configuration options will override any found by the `grok` option.
* `output`: a string indicating where to write the output bundle file.
* `includes`: an array of the ids of modules to include in the bundle.
* `excludes`: an array of the ids of modules to exclude from the bundle.
* `loader`: a string indicating the location of an AMD loader script. This
script will be inserted at the very beginning of the output bundle.
A simple example:
```js
var cram = require('cram');
var promise = cram({
// Auto-configure from our app's index.html file.
grok: './client/index.html',
// Apply our production options.
configFiles: [ 'cramOverrides.json', 'productionOverrides.json' ],
// Add the flurry analytics module.
includes: [ 'analytics/flurry' ],
// Exclude the settings module since it will be dynamically loaded.
excludes: [ 'app/settings' ],
// Put our bundle here. It will be passed to Uglify next!
output: './client/bundle.js'
});
promise.then(happyMessage, sadMessage);
function happyMessage () { console.log('Yay!'); }
function sadMessage (ex) { console.error(ex.stack); throw ex; }
```
> **Note:** cram.js does not return a Promises/A+ or ES6 promise. Be sure to
assimilate the returned promise as follows before chaining it or passing it
to other modules.
```js
// using when.js:
var when = require('when');
var promise = when(cram(options));
// or using ES6 promise or a shim (e.g. when.js 3.0)
var promise = Promise.cast(cram(options));
```