在哪里可以找到要添加到 babel.config.js 的 polyfill 名称

Where to find polyfill names to add to babel.config.js

babel docs link to github.com/zloirock/core-js获取可以使用的polyfills。我们目前正在使用 es6.array.iteratores6.promisees7.promise.finallyes6.object.assignes6.symboles6.map。这些大多与 github 页面上的内容一致,但未直接列出。

不过我现在想添加 url and url-search-params 但无法计算出在 babel 配置中使用什么魔法字符串。某处是否有所有有效的 babel polyfill 的列表?

这是我们的 babel.config.js 目前的样子:

module.exports = {
    presets: [
        [
            '@vue/app',
            {
                polyfills: [
                    'es6.array.iterator',
                    'es6.promise',
                    'es7.promise.finally',
                    'es6.object.assign',
                    'es6.symbol',
                    'es6.map',
                ],
            },
        ],
    ],
    sourceType: 'unambiguous',
};

core-js 的文档乍一看并没有提供列表本身,但在阅读之后我发现了这个 URL and SearchParams。根据此文档,我认为您应该在 polyfills 数组中包含 web.urlweb.url.to-jsonweb.url-search-params 以启用此功能。但是,我认为有一种方法可以包含 core-js 然后使用 browserlist 之类的东西来仅针对您需要支持的浏览器。希望这对你有帮助。干杯,西格弗里德。

编辑: 为了完成,我已经包括了我正在谈论的选项,因为你可以看到这是一个 React 项目,但我认为通过一些调整你可以在 Vue.js 项目中完成这项工作。

编辑#2: 我认为这就是我们正在寻找的列表:) Core-JS Polyfills

babelrc

{
  "presets": [
    [
      "@babel/preset-env",
      {
        "targets": ["last 2 versions", "not dead", "not < 2%"],
        "useBuiltIns": "entry"
      }
    ],
    "@babel/preset-react"
  ],
  "plugins": [
    "react-hot-loader/babel",
    "@babel/plugin-proposal-class-properties",
    "@babel/plugin-syntax-dynamic-import"
  ],
  "env": {
    "test": {
      "plugins": ["dynamic-import-node"]
    }
  }
}

app.js

import React from 'react'
import '@babel/polyfill'
import ReactDOM from 'react-dom'

import App from './App'
import DefaultErrorBoundary from './DefaultErrorBoundary'
import './main.scss'

if (process.env.NODE_ENV === 'development') {
  const axe = require('react-axe')
  axe(React, ReactDOM, 1000)
}

ReactDOM.render(
  <React.StrictMode>
    <DefaultErrorBoundary>
      <App />
    </DefaultErrorBoundary>
  </React.StrictMode>,
  document.getElementById('app')
)