我们不建议在文件的开头使用import '@babel/polyfill'。因为这样左的缺点是会全局引入整个 polyfill 包,比如 Array.from 会全局引入,不但包的体积大,而且还会污染全局环境。

    babel-preset-env这个包通过browserslist来转译哪些浏览器中不支持的特性。这个preset使用useBuiltIns选项,默认为false,这种方式可以将全局babel-polyfill导入,改进为更细粒度的import格式。

    需要下载

    babel-loader
    @babel/core
    @babel/preset-env
    core-js@3

    1. // webpack.config.js
    2. module.exports = {
    3. module: {
    4. rules: [
    5. {
    6. test: /\.js$/,
    7. exclude: /node_modules/,
    8. use: {
    9. loader: 'babel-loader',
    10. options: {
    11. presets: [
    12. [
    13. '@babel/preset-env',
    14. {
    15. targets : [
    16. 'last 1 version',
    17. '> 1%'
    18. ],
    19. useBuiltIns: 'usage',
    20. corejs: 3
    21. }
    22. ]
    23. ]
    24. }
    25. }
    26. }
    27. ]
    28. }
    29. }

    具体详见 https://babel.docschina.org/docs/en/babel-preset-env/