Permalink
Fetching contributors…
Cannot retrieve contributors at this time
113 lines (87 sloc) 3.92 KB

cram.js Command Line Options

cram.js has three modes of command-line operation:

  1. HTML auto-configuration via Code Inference
  2. run.js auto-configuration via Code Inference
  3. Manual configuration

HTML auto-configuration

If your server-side environment allows you to place your HTML documents in a static location, you may be able to use Code Inference on your HTML file(s) directly. In its simplest form, the command line looks like this:

node path/to/cram client/myapp.html

run.js auto-configuration

If your app's HTML documents are generated dynamically and don't exist at development time, you can still take advantage of some of cram.js's Code Inference features. Point cram at a "run.js" file and tell cram where to find the app's modules using the --root command line option.

node path/to/cram client/myapp/run.js --root client/myapp/

If the file has a ".html" extension, it is assumed to be an HTML-formatted file. All other file extensions are assumed to reference a run.js file.

Compile-time Overrides

However, in most situations, you'll want to specify some configuration options that don't apply to the run-time operation of your application. These "compile-time" overrides should be placed in a separate file from your run-time files.

Here's how you specify an additional overrides file:

node path/to/cram client/myapp.html production_build_options.json

This is simply a shortcut for the following, more explicit way to specify a configuration file:

node path/to/cram client/myapp.html --config production_build_options.json

These files do not need to be strictly JSON. They can be simple object literals.

cram.js uses the same config options as curl.js, including baseUrl, main, and paths, packages, plugins, and preloads with the following additions and caveats.

  • excludes: an array of module ids (strings) that should not be bundled
  • excludeRx: a RegExp (or array of Regexp or array of strings) that may also be used to exclude the ids of modules from the bundle
  • paths, packages, plugins, and preloads: unlike other config options, these lists are merged with the same lists in earlier config files.
  • apiName, apiContext, defineName, and defineContext are not yet supported.

The caveat to the the merged lists is that it's impossible to remove items from the lists. You can, however, remove the entire list by specifying a null value for the config option. This allows the list to be ignored by cram.js, but still used by curl.js.

Once you've removed the list, you could include a new one in a subsequent config file:

node path/to/cram client/myapp.html remove_paths.json production.json

Manual configuration

In some cases, cram.js may not properly infer your intentions. Also, for advanced applications, you'll need fine-grained control over what cram.js does. For both of these situations, cram.js looks for a few other options on the command line.

cram.js supports the following command-line arguments. In cases where these conflict with configuration options, the command-line arguments take precedence.

	-? -h --help
		provides this help message.
	-m --main --include
		includes the following file into the bundle.
		You may specify more than one by repeating this option.
	--exclude
		excludes the following file from the bundle.
		You may specify more than one by repeating this option.
	-r --root --appRoot
		specifies the path from the current working directory to
		the effective location of your html documents.  This serves as the
		root of the baseUrl in an AMD configuration.
	-c --config
		specifies an AMD configuration file.
		You may specify more than one by repeating this option.
	-o --output
		specifies the output folder for the generated bundle(s).
	--loader -l
		tells cram to include the following file as an AMD loader.