哪些 babel 设置适合导出库?

Which babel settings are suitable for exporting a library?

我是 Babel+Webpack 的新手,对 .babelrc 配置有些困惑。

第一个配置

{
    "presets": [
        [
            "@babel/env",
            {
                "modules": false,
                "useBuiltIns": "usage",
                "targets": "> 0.25%, not dead",
                "corejs": {
                    "version": 3,
                    "proposals": true
                }
            }
        ]
    ],
    "plugins": [
        "@babel/transform-runtime"
    ]
}

第二种配置:

{
    "presets": [
        [
            "@babel/env",
            {
                "modules": false,
            }
        ]
    ],
    "plugins": [
        [
            "@babel/plugin-transform-runtime", //target environment are not supported
             {
                 "corejs": 3,
                 "helpers": true,
                 "regenerator": true
             }
        ]
    ]
}

第二种配置的事实是:

  1. 增加包大小
  2. Core-js-pure 将包含不会污染全球环境的 ponyfill。

我的问题是我们要导出一个“umd”库供 public 使用,库名称为“XYZ”,我很困惑上面的哪些设置是合适的,因为有一点让我很困惑如果在最后创建的包被缩小并完全建立在 esm 模式(使用严格模式)上并且对于 public 使用它们可以像“XYZ.method()”一样访问,那么第二个配置如何是合适的,它停止污染全局命名空间。

任何人都可以举例说明并帮助我理清这个概念吗?

运行自己成这个,过去。老实说,Webpack 对于导出超过一个默认值的任何东西都很糟糕,这就是为什么你看到大多数库使用 Rollup 或 Parcel 进行捆绑。

对于库,Rollup 是比 WebPack 更好的选择。

这是一个很好的起点。

https://github.com/rollup/rollup-starter-lib

如果你必须使用 webpack,请避免使用 regenerater,因为它会给 Babel 的输出增加很多膨胀,如果你的代码需要它,那么消费应用程序应该包含它,这样你就不会最终拥有最后两次 app