哪些 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
}
]
]
}
第二种配置的事实是:
- 增加包大小
- 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
我是 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
}
]
]
}
第二种配置的事实是:
- 增加包大小
- 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