【问题标题】:Remove big dependency that doesn't declare sideEffects from bundle从包中删除不声明副作用的 bg 依赖项
【发布时间】:2021-10-08 10:05:27
【问题描述】:

我有一个使用 Webpack 4 构建的 ,由于最终捆绑包中始终包含一个库,该库具有很大的捆绑包大小。有没有一种不涉及动态导入的方法来将这个依赖项放到一个单独的块中?

【问题讨论】:

    标签: webpack webpack-4


    【解决方案1】:

    捆绑库和捆绑应用程序是有区别的。

    应用程序捆绑

    当您捆绑应用程序时,您必须捆绑所有内容。现在,如果您的捆绑包很大,那就这样吧。如果这是不可接受的,那么您将应用优化。首先,您可以将该库发布到某个 CDN 并使用传统的 script 标记来包含它,并在该脚本上使用 deferasync 属性。在你的代码中,你应该使用 Webpack external 告诉 Webpack 从包中排除这个库,而是使用外部副本。

    库捆绑

    如果您要捆绑库,则必须排除所有依赖项,即您的库的依赖项。您的库的 package.json 应该包含依赖项列表,然后应用程序将安装这些依赖项。

    根据您的问题,您正在捆绑一个库,这意味着这种严重依赖关系以及其他依赖关系。让您的库的用户安装依赖项。

    此外,您使用的依赖项没有使用副作用,而是由于一些极端情况问题,例如将所有模块重新导出为桶形模式或等效模式。因此,即使您没有使用所有功能,Webpack 也无法对您的 bundle 进行适当的 tree-shaking 并最终添加整个依赖代码。

    【讨论】:

      猜你喜欢
      • 2018-08-16
      • 2012-08-17
      • 1970-01-01
      • 2019-02-02
      • 2017-01-29
      • 2019-11-13
      • 2015-06-18
      • 1970-01-01
      • 2021-11-06
      相关资源
      最近更新 更多