A CommonJS module resolver, loader and compiler for node.js and browsers.
- Runs in node.js and browsers.
- Supports (most) node builtins and globals.
- SpiderMonkey AST based Plugin system.
- Stylish logs.
npm install quickstart -g
cd my-awesome-app
index.html
<!DOCTYPE html>
<html>
<head>
<title>Awesomeness</title>
<script src="./quickstart.js"></script>
</head>
<body></body>
</html>
package.json
{
"name": "my-awesome-app"
}
npm install underscore --save
npm install quickstart some-quickstart-transform --save-dev
quickstart --transforms some-quickstart-transform --self > quickstart.js
QuickStart will build a standalone QuickStart compiler (for browsers) that includes plugins. If you want to install or remove QuickStart plugins, or change options, repeat this step.
After that, simply link quickstart.js
in the <head>
of a document. It will compile and load your application at runtime in the browser.
quickstart --transforms some-quickstart-transform > awesome.js
This will create a compiled application for deployment.
Now simply replace quickstart.js
with awesome.js
<script src="./awesome.js"></script>
QuickStart always starts compiling your application from the entry point. This value might be read from these locations in this order:
- Manually specified
main
option (command line or node.js). - Resolved automatically with the built-in node-style module resolver.
QuickStart has two types of plugins: transforms and parsers.
- Parser plugins transform a specific type of source code to a SpiderMonkey AST object.
- Transform plugins transform a SpiderMonkey AST object to a SpiderMonkey AST object.
var quickstart = require('quickstart');
// the quickstart function returns a promise.
quickstart({/* options */}).then(function(compiled) {
var ast = compiled.ast;
var source = compiled.source;
var sourceMap = compiled.sourceMap;
// print the generated JavaScript, or print / work with the abstract syntax tree, work with sourceMaps, etc.
});
Note: options might be augmented with the parameter --config jsonFile.json
. It defaults to quickstart.json, and will be ignored if not found.
Command line options look the same, except hyphenated.
{
runtime: 'quickstart/runtime/browser', // override the default runtime, defaults to quickstart/runtime/browser
transforms: [], // which transforms to use, defaults to none
parsers: {}, // which parsers to use for each file extension, defaults to none, except embedded ones such as .js and .json.
compress: false, // optimize and mangle the ast and JavaScript output
output: true, // generates the (compressed if {compress: true}) JavaScript output, defaults to true
sourceMap: false, // generates the (compressed if {compress: true}) source map, defaults to false
self: false // compiles the QuickStart compiler instead of the current app, defaults to false
main: false // override the application's main, defaults to the QuickStart resolver
warnings: true // display warning messages, defaults to true
}
quickstart --help
--runtime runtimeModule # override the default runtime
--transforms transformModule # which transforms to use
--parsers ext=parserModule # which parsers to use
--compress # optimize and mangle the ast and JavaScript output
--output # generates the (compressed if `--compress` is set) JavaScript output, defaults to true
--source-map # generates the (compressed if `--compress` is set) source map, defaults to false
--self # compiles the QuickStart compiler instead of the current app, defaults to false
--main ./path/to/entry-point # override the application's entry point, defaults to the QuickStart resolver
--warnings # display warnings messages, defaults to true
--ast ./path/to/source.ast # writes the ast to a file or *STDOUT*, defaults to false
When --output
is set to a string, it will send the JavaScript output to that file instead of STDOUT.
quickstart --output output.js
When --source-map
is set to a string, it will send the source map output to that file instead of STDOUT.
quickstart --source-map output.map > output.js
When --source-map
is set without a value, and --output
is set, it will append an inline base64 encoded source map to the output.
quickstart --source-map > output.js
quickstart --source-map --output output.js
When --source-map
is set and --output
is unset (--no-output
) it will write the source map to STDOUT (no value) or the file (value).
quickstart --no-output --source-map > output.map
quickstart --no-output --source-map output.map
When --ast
is set without a value the ast is printed to STDOUT.
quickstart --ast > output.ast
This is useful, for instance, to pipe the AST to UglifyJS or any other program that accepts a SpiderMonkey AST:
quickstart --ast --source-map | uglifyjs --spidermonkey > out.js
Note: the --source-map
option must be set if you need location information in the AST (to have UglifyJS generate a source map, for instance).