"useBuiltIns"
默認為false, 不為每個文件自動添加polyfill,也不要進行轉換import "core-js"或import "@babel/polyfill"更改為單個polyfill。
"usage": 按需導入填充物
填充物主要來自core-js
、regenerator-runtime
等開源項目.
"useBuiltIns": "usage"
填充物示例如下(babel轉譯后源碼):
require("core-js/modules/es6.object.define-property");
require("regenerator-runtime/runtime");
require("core-js/modules/es6.promise");
require("core-js/modules/es6.object.to-string");
"entry": 從全局使用填充物
entry代表填充物在入口js文件中填充到全局空間中, 不需要為每個js文件導入填充物.
因此常發生ReferenceError
:
ReferenceError: regeneratorRuntime is not defined
at _foo2 (/home/githmb/babel/b.js:49:43)
at foo (/home/githmb/babel/b.js:45:16)
at main (/home/githmb/babel/b.js:13:3)
targets.esmodules
現代瀏覽器其實不需要填充:
{
"presets": [
[
"@babel/preset-env",
{
"modules": "commonjs",
"useBuiltIns": false,
"targets": {
"esmodules": true
}
}
],
"@babel/typescript"
]
}