【问题标题】:Where to find polyfill names to add to babel.config.js在哪里可以找到要添加到 babel.config.js 的 polyfill 名称
【发布时间】:2019-05-13 13:58:58
【问题描述】:

babel docs 链接到 github.com/zloirock/core-js 以获得可以使用的 polyfill。我们目前正在使用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',
};

【问题讨论】:

    标签: javascript babeljs babel-polyfill


    【解决方案1】:

    乍一看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')
    )
    

    【讨论】:

    • 您的 Core-JS Polyfills 链接很有用。事实证明,由于 vue 依赖,我们被困在旧版本的 core-js (2.6.1) 上,这就是为什么我们有旧样式名称,例如 es6.promise。回到github.com/zloirock/core-js/tree/v2.6.1 显示我们可以使用的所有polyfills(遗憾的是没有url polyfills!)
    • 是的,当我深入研究文档时,我看到了同样的情况,名称已经改变,遗憾的是,无论如何我很高兴这至少有一点帮助。干杯
    猜你喜欢
    • 2020-12-15
    • 1970-01-01
    • 1970-01-01
    • 2014-03-17
    • 2011-07-04
    • 2010-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多