如何防止 babel 转译生成器函数

How to prevent babel from transpiling generator functions

我对 babel 有一个奇怪的问题。当我在我的 类 中使用一个简单的生成器函数时,babel 从中创建了一个包含对 regeneratorRuntime.

的调用的函数
var marked3[=10=] = [getQueryDummy].map(regeneratorRuntime.mark);
function getQueryDummy(start, end, step) {
    return regeneratorRuntime.wrap(function getQueryDummy$(context[=10=]) {

不好的是,它不会创建这个函数,当我忘记手动用原始生成器替换已编译的生成器时总是会导致错误(这种情况一直发生)

我知道我可以添加

require('babel/polyfill')

到我的文件。 polyfill 包含 regeneratorRuntime 函数。这就是它变得非常奇怪的地方。即使我放置了 require(...) 在文件的最顶部,babel 在包含 polyfill 之前调用 regeneratorRuntime,这再次导致相同的错误。

为了完整起见,这是生成器

function *getQueryDummy(start, end, step) {
  while (start < end) {
    yield [start, '@dummy'];
      start += step;
  }
}

我正在使用 babel 版本 5.8.23

有没有办法告诉 babel 完全不要触摸 generators? node 本身就支持它们,我不需要编译它...

你可以 blacklist regenerator。如果您使用 transform:

构建
babel.transform(code, {blacklist:['regenerator']});

或从命令行使用:

--blacklist regenerator

我们也可以使用exclude https://babeljs.io/docs/en/babel-preset-env#exclude

并使用 .babelrc