【问题标题】:Which babel settings are suitable for exporting a library?哪些 babel 设置适合导出库?
【发布时间】:2020-09-21 11:40:02
【问题描述】:

我是 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”库以供公众使用,其库名称为“XYZ”,我很困惑上述哪些设置适合,因为真正让我困惑的一件事是,如果包即创建最后被缩小并完全建立在 esm 模式(使用严格模式)上,供公众使用,他们可以像“XYZ.method()”一样访问,然后第二个配置如何合适并停止污染全局命名空间。

谁能用一个例子解释我并帮助我清除这个概念?

【问题讨论】:

    标签: javascript webpack module bundler babeljs


    【解决方案1】:

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

    这是一个很好的起点。

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

    如果你必须使用 webpack,请避免使用 regenerator,因为它会给 Babel 的输出增加很多臃肿,如果你的代码需要它,那么消费应用程序应该包含它,所以你最终不会拥有它两次在最终应用中

    【讨论】:

      【解决方案2】:

      过去我自己也遇到过这种情况。老实说,Webpack 对于导出多个默认值的任何东西都很糟糕,这就是为什么您会看到大多数库使用 Rollup 或 Parcel 进行捆绑。

      【讨论】:

      • 感谢@Steve 的建议和回复。你能帮我理解我的问题吗?
      猜你喜欢
      • 1970-01-01
      • 2015-11-30
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-30
      • 2016-11-21
      相关资源
      最近更新 更多