有没有办法抑制 babel 提供的 polyfill?例如,转译以下内容:
const obj = { a: 1 };
const obj2 = { ...obj };
将输出
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var obj = { a: 1 };
var obj2 = _extends({}, obj);
我希望它输出:
var obj = { a: 1 };
var obj2 = Object.assign({}, obj);
由于我们代码库的性质,我想提供一个 Object.assign polyfill,然后让 babel 在转译时不进行此转换。我已经通读了文档,但找不到实现这一目标的方法。这可能吗?
看起来您正在使用对象休息传播转换插件。如文档所述,可以将其配置为仅使用内置函数,而不是提供自己的 polyfill。如果使用.babelrc
来配置生成过程,只需将其修改为如下所示:
{
...
"plugins": [
["transform-object-rest-spread", { "useBuiltIns": true }]
]
}