6to5 turns ES6 code into vanilla ES5, so you can use ES6 features today.
- Fast - no redundant code added so your compiled code is as fast as possible.
- Extensive - 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.
- Concise - does not pollute scope with unneccesary variables.
Installation
$ npm install -g 6to5
To be implemented:
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("filename.js");
to5.transformFile("filename.js", function (err, data) {
});
Options
to5.transform("code();", {
blacklist: [],
whitelist: [],
sourceMap: false,
sourceMapObject: false,
filename: "unknown",
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({
options: {
},
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"));
Caveats
For-of
Iterator/Symbol polyfill required.
Classes
Cannot subclass built-ins such as Date
, Array
, DOM
etc.
Comparison to Traceur
Performance
The future
Implement own parser and generator that preserves whitespace and automatically
works out generation rules based on code input.