如何使用 webpack 性能对象将 js 文件分解为 vue cli 3 中的块?

新手上路,请多包涵

我已经使用 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

期待你的答复。

PS:我读过 这个 并尝试创建 vue.config.js 文件并在文件中添加以下内容

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

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

更新

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

 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 似乎它们都没有影响任何更改。有什么帮助吗?

原文由 iSaumya 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 744
2 个回答

添加到我的 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,
      }
    }
  }
}

原文由 tbonz 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

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

您真正想要的是更改 splitChunks 的设置。不幸的是,该选项对于初学者来说设置起来非常复杂,因此我推荐 这篇文章 以更好地了解它的实际工作原理。

然而,本文没有涵盖的是,在最近的版本中,一个新的实验 选项 被添加到 splitChunksmaxSize

它应该像这样工作:

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

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

原文由 Linus Borg 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题