6to5 turns ES6 code into vanilla ES5, so you can use ES6 features today.
- Fast - 10x faster than Traceur.
- Easy - with Browserify support, Node API, Connect Middleware and a CLI.
- Lossless - source map support so you can debug your compiled code with ease.
- Compact - maps directly to the equivalent ES5 with no runtime required.
- Concise - does not pollute scope with unneccesary variables.
Features
| Name | Implemented |
|---|---|
| Arrow functions | ✓ |
| Classes | ✓ |
| Default parameters | ✓ |
| Spread | ✓ |
| Block binding | ✓ |
| Property method assignment | ✓ |
| Rest parameters | ✓ |
| Template literals | ✓ |
| Modules | ✓ |
| Destructuring assignment | |
| Generators |
Installation
$ npm install -g 6to5
Usage
CLI
Compile the file script.js and output it to script-compiled.js.
$ 6to5 script.js -o script-compiled.js
Compile the entire src directory and output it to the lib directory.
$ 6to5 src -d lib
Compile the file script.js and output it to stdout.
$ 6to5 script.js
Browserify
$ browserify script.js -t 6to5/browserify --outfile bundle.js
Node
var to5 = require("6to5");
to5.transform("code();");
to5.transformFileSync("script.js");
to5.transformFile("script.js", function (err, data) {
});
Options
to5.transform("code();", {
// List of transformers to EXCLUDE
// This is a camelised version of the name found in `features`
// eg. "Arrow functions" is "arrowFunctions"
blacklist: [],
// List of transformers to ONLY use.
// See `blacklist` for naming scheme.
whitelist: [],
// Append source map and comment to bottom of returned output.
sourceMap: false,
// Filename for use in errors etc.
filename: "unknown",
// Format options
// See https://github.com/Constellation/escodegen/wiki/API for options.
format: {}
});
Require hook
All subsequent files required by node will be transformed into ES5 compatible code.
require("6to5/register");
Connect Middleware
var to5 = require("6to5");
app.use(to5.middleware({
transform: {
// options to use when transforming files
},
src: "assets",
dest: "cache"
}));
app.use(connect.static("cache"));
Browserify
var to5 = require("6to5");
browserify()
.transform(to5.browserify)
.require("script.js", { entry: true })
.bundle({ debug: true })
.pipe(fs.createWriteStream("bundle.js"));
Comparison to Traceur
Performance
Description
Languages
JavaScript
99.5%
Makefile
0.3%
HTML
0.1%