Webpack 模块规则从 CDN 提供图标

问题描述 投票:0回答:1

我的应用程序提供了图标下拉菜单。我们正在使用 simple-iconsbootstrap-icons 以及我们内部开发的一些自定义图标。

这些图标由我们的应用程序使用 webpack 模块规则托管。例如,简单图标的规则如下:

{
  test: /simple-icons\/.*\.svg$/,
  type: "asset/resource",
  generator: {
    filename: "icons/simple-icons/[name][ext]",
  },
},

这告诉 webpack 将所有 SVG 文件从 simple-icons npm 包复制到最终构建中的

icons/simple-icons/
文件夹。然后可以在我们的网站上通过各自的路径访问这些图标。例如,可通过
github.svg
访问
<BASE_URL>/icons/simple-icons/github.svg
文件。

这种方法效果很好,但它会使捆绑包的大小变得臃肿。如果能够从 CDN 提供这些图标并将它们从捆绑包中删除,那就太棒了。

我考虑过将图标写入 S3,但意识到它们已经由 CDN 托管,例如jsDelivr。所以我更改了上面的规则,以便我的应用程序将提供来自 jsDelivr 的图标:

{
  test: /simple-icons\/.*\.svg$/,
  type: "asset/resource",
  generator: {
    emit: false,
    publicPath: `https://cdn.jsdelivr.net/npm/simple-icons@${
      require("simple-icons/package.json").version
    }/`,
    filename: "icons/[name][ext]",
  },
},

注意,

emit=False
告诉webpack不要将文件复制到服务器,这是有道理的,因为文件已经在那里了。

这将从捆绑包中删除图标,并允许我从 jsDelivr 中提取它们。这种方法/实施有什么主要缺点吗?我对 webpack 很陌生,所以只是想知道我是否正确配置了它。

webpack cdn jsdelivr
1个回答
0
投票

使用 CDN 提供图标,而不是将它们包含在应用程序包中,可以帮助减小包大小并提高加载速度。但是,请记住潜在的缺点,例如依赖 CDN 的可用性、需要准确的版本跟踪、隐私问题、轻微的性能开销、缓存控制、安全考虑以及许可合规性。建议自动进行版本跟踪并监控 CDN 性能。总之,这种方法是一种有效的优化策略,但需要仔细考虑您的具体要求和潜在挑战。

您可以在以下资源中找到有关我正在谈论的内容的更多信息:

© www.soinside.com 2019 - 2024. All rights reserved.