babel有多种预设,最常见的预设是@babel/preset-env
    @babel/preset-env可以让你使用最新的JS语法,而无需针对每种语法转换设置具体的插件
    配置:.babelrc

    1. {
    2. "presets": [
    3. "@babel/preset-env"
    4. ]
    5. }

    兼容的浏览器
    @babel/preset-env需要根据兼容的浏览器范围来确定如何编译,和postcss一样,可以使用文件.browserslistrc来描述浏览器的兼容范围

    last 3 version
    > 1%
    not ie <= 8
    

    自身的配置
    postcss-preset-env一样,@babel/preset-env自身也有一些配置

    具体的配置见:https://www.babeljs.cn/docs/babel-preset-env#options

    配置方式是:

    {
        "presets": [
            ["@babel/preset-env", {
                "配置项1": "配置值",
                "配置项2": "配置值",
                "配置项3": "配置值"
            }]
        ]
    }
    

    其中一个比较常见的配置项是usebuiltins,该配置的默认值是false
    它有什么用呢?由于该预设仅转换新的语法,并不对新的API进行任何处理
    例如:

    new Promise(resolve => {
        resolve()
    })
    

    转换的结果为

    new Promise(function (resolve) {
      resolve();
    });
    

    如果遇到没有Promise构造函数的旧版本浏览器,该代码就会报错
    而配置usebuiltins可以在编译结果中注入这些新的API,它的值默认为false,表示不注入任何新的API,可以将其设置为usage,表示根据API的使用情况,按需导入API

    {
        "presets": [
            ["@babel/preset-env", {
                "useBuiltIns": "usage",
                "corejs": 3
            }]
        ]
    }
    

    例子1:

     "dependencies": {
        "core-js": "^3.6.4",        //promise和数组里新的函数
        "regenerator-runtime": "^0.13.3"    //特殊语法例如await,变成新的api的实现
      }