如何在没有外部依赖的情况下使用babel-runtime变换?

时间:2017-05-31 22:28:21

标签: babeljs

如果我使用babel-plugin-transform-runtime插件,那么我的代码将import / require babel-runtime,而不是将所有这些帮助函数包含在内。这很好,但它使我的库具有依赖babel-runtime。我宁愿做的是让Babel提取一个额外的文件(./babel-runtime)并将其与其他输出文件放在一起,这样我就不必将它包含在外部依赖项中。也就是说,我不需要在我的库使用的任何地方添加package.json。这可能吗?

2 个答案:

答案 0 :(得分:1)

您可以使用babel-runtime插件中的moduleName选项导入自定义模块而不是transform-runtime

{
  "plugins": [
    ["transform-runtime", {
      "moduleName": "./babel-runtime"
    }]
  ]
}

答案 1 :(得分:1)

我找到的唯一解决方案是使用babel-plugin-transform-runtime插件并将exclude: ['transform-regenerator']添加到您的配置中。这将阻止Babel添加对再生器的依赖。这也意味着您的代码不会在旧浏览器中运行。

如果您需要支持旧版浏览器,可以尝试使用fast-async。它说有一种方法可以在索引文件中内联依赖,但我还没有尝试过。我相信这假设浏览器支持Promises但不支持async / await。