# 6to5ify

[6to5](https://github.com/6to5/6to5) [browserify](https://github.com/substack/node-browserify) plugin

## Installation

    $ npm install --save-dev 6to5ify

## Usage

### CLI

    $ browserify script.js -t 6to5ify --outfile bundle.js

### Node

```javascript
var fs = require("fs");
var browserify = require("browserify");
var to5ify = require("6to5ify");
browserify({ debug: true })
  .transform(to5ify)
  .require("./script.js", { entry: true })
  .bundle()
  .on("error", function (err) { console.log("Error : " + err.message); })
  .pipe(fs.createWriteStream("bundle.js"));
```

#### [Options](https://6to5.github.io/usage.html#options)

```javascript
browserify().transform(to5ify.configure({
  blacklist: ["generators"]
}))
```

```sh
$ browserify -d -e script.js -t [ 6to5ify --blacklist generators ]
```

#### Enable Experimental Transforms

By default 6to5's [experimental transforms](http://6to5.org/docs/usage/transformers/#es7-experimental-)
are disabled. You can turn them on by passing `experimental` as a configuration option.

```javascript
browserify().transform(to5ify.configure({
  experimental: true
}))
```

```sh
$ browserify -d -e script.js -t [ 6to5ify --experimental ]
```

#### Customising extensions

By default all files with the extensions `.js`, `.es`, '`.es6` and `.jsx` are compiled.
You can change this by passing an array of extensions.

**NOTE:** This will override the default ones so if you want to use any of them
you have to add them back.

```javascript
browserify().transform(to5ify.configure({
  extensions: [".6to5"]
}))
```

```sh
$ browserify -d -e script.js -t [ 6to5ify --extensions .6to5 ]
```

#### Relative source maps

Browserify passes an absolute path so there's no way to determine what folder
it's relative to. You can pass a relative path that'll be removed from the
absolute path with the `sourceMapRelative` option.

```javascript
browserify().transform(to5ify.configure({
  sourceMapRelative: "/Users/sebastian/Projects/my-cool-website/assets"
}))
```

```sh
$ browserify -d -e script.js -t [ 6to5ify --sourceMapRelative . ]
```

#### Additional options

```javascript
browserify().transform(to5ify.configure({
  // 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/
}))
```

```sh
$ browserify -d -e script.js -t [ 6to5ify --ignore regex --only my_es6_folder ]
```

#### ES6 Polyfill

As a convenience, the 6to5 polyfill is exposed in 6to5ify. If you've got
a browserify-only package this may alleviate the necessity to have
*both* 6to5 & 6to5ify installed.

```javascript
// In browser code
require("6to5ify/polyfill");
```
