# Usage ## CLI Compile the file `script.js` and output it to stdout. $ 6to5 script.js Compile the file `script.js` and output it to `script-compiled.js`. $ 6to5 script.js --out-file script-compiled.js Compile the file `script.js` and output it to `script-compiled.js` and save a source map to `script-compiled.js.map`. $ 6to5 script.js --source-maps --out-file script-compiled.js Compile the file `script.js` and output it to `script-compiled.js` with a source map embedded in a comment at the bottom. $ 6to5 script.js --source-maps-inline --out-file script-compiled.js Compile the entire `src` directory and output it to the `lib` directory. $ 6to5 src --out-dir lib Compile the entire `src` directory and output it to the one concatenated file. $ 6to5 src --out-file script-compiled.js Pipe a file in via stdin and output it to `script-compiled.js` $ 6to5 --out-file script-compiled.js < script.js ### Node Launch a repl. $ 6to5-node Evaluate code. $ 6to5-node -e "class Test { }" Compile and run `test.js`. $ 6to5-node test ## Node ```javascript var to5 = require("6to5"); ``` ### to5.transform(code, [opts]); ```javascript var result = to5.transform("code();", options); result.code; result.map; result.ast; ``` ### to5.transformFileSync(filename, [opts]) ```javascript to5.transformFileSync("filename.js", options).code; ``` ### to5.transformFile(filename, [opts], callback) ```javascript to5.transformFile("filename.js", options, function (err, result) { result.code; }); ``` #### Options ```javascript { // Filename for use in errors etc. // Default: "unknown" filename: "filename", // Filename relative to `sourceRoot` // Default: `filename` option. filenameRelative: "", // List of transformers to EXCLUDE. // Run `6to5 --help` to see a full list of transformers. blacklist: [], // List of transformers to ONLY use. // Run `6to5 --help` to see a full list of transformers. whitelist: [], // Module formatter to use // Run `6to5 --help` to see a full list of module formatters. // Default: "common" modules: "common", // If truthy, adds a `map` property to returned output. // If set to "inline", a comment with a sourceMappingURL directive is added to // the bottom of the returned code. // Default: false sourceMap: true, // Set `file` on returned source map. // Default: `filenameRelative` option. sourceMapName: "filename", // Set `sources[0]` on returned source map. // Default: `filenameRelative` option. sourceFileName: "filename", // The root from which all sources are relative // Default: `moduleRoot` option. sourceRoot: "assets/scripts", // Optional prefix for the AMD module formatter that will be prepend to the // filename on module definitions // Default: `sourceRoot` option. moduleRoot: "my-app", // If truthy, insert an explicit id for each defined AMD module. // By default, AMD modules are anonymous. // Default: false amdModuleIds: true, // Optionally replace all 6to5 helper declarations with a referenece to this // variable. If set to `true` then the default namespace is used "to5Runtime". // Default: false runtime: true, // Output comments in generated output // Default: true comments: false, // Enable support for experimental ES7 features // Default: false experimental: true } ``` ### Require hook All subsequent files required by node with the extensions `.es6` and `.js` will be transformed by 6to5. The polyfill specified in [Polyfill](polyfill.md) is also required. ```javascript require("6to5/register"); ``` **NOTE:** By default all requires to `node_modules` will be ignored. You can override this by passing an ignore regex via: ```javascript require("6to5/register")({ // This will override `node_modules` ignoring - you can alternatively pass // a regex ignore: false }); ``` #### Options ```javascript require("6to5/register")({ // Optional ignore regex - if any filenames **do** match this regex then they // aren't compiled ignore: /regex/, // Optional only regex - if any filenames **don't** match this regex then they // aren't compiled only: /my_es6_folder/, // See options above for usage whitelist: [], blacklist: [], // This will remove the currently hooked extensions of .es6 and .js so you'll // have to add them back if you want them to be used again. extensions: [".js", ".es6"] }); ``` ## Experimental 6to5 also has experimental support for ES7 proposals. You can enable this with the `experimental: true` option when using the [Node API](#node) or `--experimental` when using the [CLI](#cli). **WARNING:** These proposals are subject to change so use with **extreme caution**.