【问题标题】:Use Babel runtime, but only for helpers, not polyfills?使用 Babel 运行时,但只用于助手,而不是 polyfill?
【发布时间】:2015-10-12 15:06:41
【问题描述】:

当我将 Babel 与运行时选项一起使用时,它会通过导入获得自己的辅助函数,例如 _createClass(而不是仅仅内联打印这些函数)。我对此很满意。

但它也用它自己的 polyfill 替换了任何对 Set、Map 等的使用,这是我不想要的,因为我将浏览器化我的代码并在我已经在必要时对这些特性进行 polyfill 的浏览器中使用它.

有没有办法将 Babel 配置为仅使用运行时来导入内部帮助程序,而不是填充新的 API?

【问题讨论】:

  • 您对MapSet 有什么顾虑? core-js,Babel 的 polyfill,只会在需要时替换它们,它不会总是强制替换。
  • babeljs.io/docs/advanced/external-helpers 但如果你在节点 4 上,没有理由不加载 polyfill。不过,我对为什么重复的助手很重要感到困惑,因为如果您不捆绑并将 JS 发送给客户端,它对任何事情的影响都可以忽略不计。
  • 是的,但是当我知道不需要将 core-js 加载到内存中时,即使它选择返回本机,它仍然是一种资源浪费。如果我想浏览我的代码并在本地支持 Map 和 Set 的浏览器中使用它(或者我知道我已经在全局范围内填充了它们)怎么办?需要有一种方法可以选择不使用 polyfill,同时还需要有效地不选择不导入帮助器。
  • 你是对的。我只以 Node 4 为例,我也关心浏览器。我已经更新了我的问题。
  • 外部助手选项看起来很有趣,但并不完全正确。在我的情况下,我不能污染全球环境。我希望它根据需要导入帮助程序,就像没有 polyfill 的运行时选项一样。

标签: babeljs


【解决方案1】:

如果你不想使用core-js 作为polyfill,那么你不能使用runtime。另一种方法是加载external helpers,它会创建一个包含所有 Babel 辅助函数的全局对象。

在你的入口点,做

require("babel-core/external-helpers");

然后通过

externalHelpers: true

作为 Babel 配置的一部分。

【讨论】:

    猜你喜欢
    • 2019-06-15
    • 1970-01-01
    • 1970-01-01
    • 2018-07-10
    • 1970-01-01
    • 2017-11-26
    • 1970-01-01
    • 2019-02-22
    • 1970-01-01
    相关资源
    最近更新 更多