如何从webpack生成的NPM包中正确加载资源?

时间:2016-05-11 19:32:20

标签: css reactjs npm webpack webpack-file-loader

我使用webpack为npm包生成适当的文件,该文件包将托管一些反应组件。他们附加了一些CSS,引用了一些字体和图标。

使用file加载程序时,使用主应用程序中缺少的绝对路径(即fonts/my-font.woff)错误引用这些资产。

有没有办法解决这个问题,让我的主应用程序寻找合适的文件?我宁愿修复软件包本身而不是复制像someone has mentioned这样的资产,因为我可能无法完全控制主应用程序。

1 个答案:

答案 0 :(得分:0)

好吧,我先说一下,在组件中包含字体通常不是一个好主意,因为主应用程序可能会拥有自己要与之抗衡的样式/品牌/等。

也就是说,如果字体类似于图标,则可以对base64进行编码,并将其内联到CSS中。有几个Webpack编码器插件可以做到这一点。

您还提到了图标,我将尝试将它们转换为SVG并将其提供给代码。您还可以将base64 PNG编码为CSS作为后备。

此方法的好处:

  • 消除父应用程序中的HTTP请求
  • 当您更新程序包时,父应用程序始终具有最新的(非缓存的)图标/字体
  • 您不必担心路径,打包外部文件等

我能想到的缺点:

  • 您正在大幅增加脚本大小
  • 您失去了一些缓存优势
  • 如果您不是图标/字体的版权所有者,则此 可能违反了《服务条款》