75 lines
2.2 KiB
Markdown
75 lines
2.2 KiB
Markdown
regenerator [](https://travis-ci.org/facebook/regenerator)
|
|
===
|
|
|
|
This package implements a fully-functional source transformation that
|
|
takes the proposed syntax for generators/`yield` from future versions of
|
|
JS ([ECMAScript6 or ES6](http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts), experimentally implemented in Node.js v0.11) and
|
|
spits out efficient JS-of-today (ES5) that behaves the same way.
|
|
|
|
A small runtime library (less than 1KB compressed) is required to provide the
|
|
`wrapGenerator` function. You can install it either as a CommonJS module
|
|
or as a standalone .js file, whichever you prefer.
|
|
|
|
Installation
|
|
---
|
|
|
|
From NPM:
|
|
```sh
|
|
npm install -g regenerator
|
|
```
|
|
|
|
From GitHub:
|
|
```sh
|
|
cd path/to/node_modules
|
|
git clone git://github.com/facebook/regenerator.git
|
|
cd regenerator
|
|
npm install .
|
|
npm test
|
|
```
|
|
|
|
Usage
|
|
---
|
|
|
|
You have several options for using this module.
|
|
|
|
Simplest usage:
|
|
```sh
|
|
regenerator es6.js > es5.js # Just the transform.
|
|
regenerator --include-runtime es6.js > es5.js # Add the runtime too.
|
|
regenerator src lib # Transform every .js file in src and output to lib.
|
|
```
|
|
|
|
Programmatic usage:
|
|
```js
|
|
var es5Source = require("regenerator").compile(es6Source).code;
|
|
var es5SourceWithRuntime = require("regenerator").compile(es6Source, {
|
|
includeRuntime: true
|
|
}).code;
|
|
```
|
|
|
|
Babel plugin:
|
|
```js
|
|
var babel = require("babel-core");
|
|
var code = babel.transform(es6Source, {
|
|
plugins: [require("generator")]
|
|
}).code;
|
|
```
|
|
|
|
How can you get involved?
|
|
---
|
|
|
|
The easiest way to get involved is to look for buggy examples using [the
|
|
sandbox](http://facebook.github.io/regenerator/), and when you find
|
|
something strange just click the "report a bug" link (the new issue form
|
|
will be populated automatically with the problematic code).
|
|
|
|
Alternatively, you can
|
|
[fork](https://github.com/facebook/regenerator/fork) the repository,
|
|
create some failing tests cases in [test/tests.es6.js](test/tests.es6.js),
|
|
and send pull requests for me to fix.
|
|
|
|
If you're feeling especially brave, you are more than welcome to dive into
|
|
the transformer code and fix the bug(s) yourself, but I must warn you that
|
|
the code could really benefit from [better implementation
|
|
comments](https://github.com/facebook/regenerator/issues/7).
|