Regenerator transform

This plugin uses the regenerator module to transform async and generator functions. regeneratorRuntime is not included.

Runtime required

You need to use either the Babel polyfill or the regenerator runtime so that regeneratorRuntime will be defined.

Async functions

These are only usable if you enable their syntax plugin. See syntax-async-functions for information.

Example

In

function* a() {
  yield 1;
}

Out

var _marked = [a].map(regeneratorRuntime.mark);

function a() {
  return regeneratorRuntime.wrap(function a$(_context) {
    while (1) {
      switch (_context.prev = _context.next) {
        case 0:
          _context.next = 2;
          return 1;

        case 2:
        case "end":
          return _context.stop();
      }
    }
  }, _marked[0], this);
}

Try in REPL

Installation

npm install --save-dev babel-plugin-transform-regenerator

Usage

.babelrc

// without options
{
  "plugins": ["transform-regenerator"]
}
// with options
{
  "plugins": [
    ["transform-regenerator", {
      asyncGenerators: false, // true by default
      generators: false, // true by default
      async: false // true by default
    }]
  ]
}

Via CLI

babel --plugins transform-regenerator script.js

Via Node API

require("babel-core").transform("code", {
  plugins: ["transform-regenerator"]
});