【问题标题】:How to break the js files into chunks in vue cli 3 with webpack performance object?如何使用 webpack 性能对象在 vue cli 3 中将 js 文件分成块?
【发布时间】:2019-01-19 19:28:30
【问题描述】:

我使用 vue cli v3 做了一个项目。构建项目后,我看到了 2 个警告,即

warning

asset size limit: The following asset(s) exceed the recommended size limit (244 KiB).

This can impact web performance.

Assets:

  js/chunk-vendors.2557157d.js (474 KiB)

warning

entrypoint size limit: The following entrypoint(s) combined asset size exceeds the recommended limit (244 KiB). This can impact web performance.

Entrypoints:

  app (617 KiB)

      js/chunk-vendors.2557157d.js

      css/app.821fcb13.css

      js/app.b5a47a94.js

现在经过检查,我发现如果我在 webpack 配置中添加以下内容

performance: {
maxEntrypointSize: 512000,
maxAssetSize: 512000
}

然后它会自动将 js 文件分成小块。现在在 vue cli 3 中没有 webpack.config 文件。

所以,如果您能指导如何实现这一点,以便文件在超过某些限制时自动分块,这将非常有帮助。

这是我看到的:https://github.com/webpack/webpack/issues/3486#issuecomment-397915908

期待您的回复。

P.S.:我已阅读 this 并尝试创建 vue.config.js 文件并在文件中添加以下内容

module.exports = {
  configureWebpack: {
    performance: {
    maxEntrypointSize: 512000,
    maxAssetSize: 512000
    }
  }
}

但它什么也没做。谁能帮助让我知道我应该怎么做才能确保我的 js 文件块不超过 vue 推荐的大小?

更新

根据 Linus Borg 的回答,我尝试将以下两个代码放入 vue.config.js 文件中。 试一试

module.exports = {
  configureWebpack: {
    splitChunks: {
            minSize: 10000,
            maxSize: 250000,
        }
  }
}

尝试2

module.exports = {
  configureWebpack: {
        splitChunks: {
            cacheGroups: {
                node_vendors: {
                    test: /[\\/]node_modules[\\/]/,
                    chunks: "all",
                    priority: 1
                }
            }
        }
  }
}

在那之后,当我构建我的生产项目时。我看到了同样的警告,没有改变任何大小:https://i.imgur.com/7Hp7SXC.jpg 似乎它们都没有影响任何更改。有什么帮助吗?

【问题讨论】:

    标签: webpack vue.js vue-cli


    【解决方案1】:

    添加到我的 vue.config.js 文件中的以下内容是在为我的 @vue/cli 项目(版本 3.0.4)执行 npm run build 时最终分块的所有供应商资产。

    module.exports = {
      configureWebpack:{
        optimization: {
          splitChunks: {
            minSize: 10000,
            maxSize: 250000,
          }
        }
      }
    }
    

    隐藏警告

    module.exports = {
      configureWebpack:{
        performance: {
          hints: false
        },
        optimization: {
          splitChunks: {
            minSize: 10000,
            maxSize: 250000,
          }
        }
      }
    }
    

    【讨论】:

    • @iSaumya 如果您想隐藏警告,您可以使用上面编辑过的配置。但是,除非您开始删除依赖项或进行进一步的代码拆分,否则到目前为止您只能减少某些文件块。您也可以尝试将 maxSize 值减小到 250000 以下。
    • 嗨,在我的 vue 项目中,我已经完成了大量的代码拆分。我已经导入了每个组件,路由器。不幸的是,无法异步加载 import a from 'b',因为它在代码中使用,但是在模式位置我已经完成了代码拆分。就是不能拆分供应商。
    【解决方案2】:

    您误解了您更改的设置,可能是因为您误读了您链接到的问题评论。

    这些不是限制告诉 webpack 如何/何时拆分块,它们只定义在控制台中显示警告的限制,仅此而已。

    您真正想要的是更改splitChunks 的设置。不幸的是,这个选项对于初学者来说设置起来相当复杂,所以我建议 this article 更好地了解它的实际工作原理。

    但是本文没有涉及的是,在最近的版本中,splitChunks 中添加了一个新的exerimental optionmaxSize

    它应该像这样工作:

    configureWebpack: {
        optimization: {
            splitChunks: {
                minSize: 10000,
                maxSize: 250000,
            }
        }
    }
    

    请记住,它是实验性的,因此更可靠的方法是配置 splitchunks 以创建不超过大小限制的块,方法是使用 splitChunks.cacheGroups 手动将不同的依赖项放入不同的块中。

    【讨论】:

    • 您好,我尝试将以下两个代码都放入vue.config.js 文件中。尝试 1:pastebin.com/9k3EsuUf 和尝试 2:pastebin.com/CjqfURfd 之后,当我构建我的生产项目时。我看到了同样的警告,没有改变任何大小:i.imgur.com/7Hp7SXC.jpg 似乎它们都没有影响任何变化。有什么帮助吗?
    【解决方案3】:

    这是我的配置文件,可以在我的项目中使用,请尝试一下。

    module.exports = {
        configureWebpack: {
            performance: {
                hints: "warning", // enum
                maxAssetSize: 1048576, // int (in bytes),
                maxEntrypointSize: 1048576, // int (in bytes)
            }
        }
    }
    

    【讨论】:

    • 您好,我确实使用了上述配置,但仍然看到以下警告:pastebin.com/sxY38XFC 怎么办?
    猜你喜欢
    • 2020-09-10
    • 2017-06-14
    • 2018-09-10
    • 2019-01-03
    • 2019-06-24
    • 1970-01-01
    • 2018-10-18
    • 2018-08-15
    • 2017-10-02
    相关资源
    最近更新 更多