如何从Rails的npm包中加载svg?

问题描述

在我们公司中,我们有一个共享的npm软件包,其中包含在应用程序之间共享的图像(大部分为SVG),以便能够在需要时更轻松地更新它们并保持一致。

我正在尝试在我们的Rails应用程序中使用这样的图像(更具体地说是在ERB模板中),对我来说听起来很简单,但我无法使其正常工作。我在网上进行了很多研究,只能在SCSS / JS中找到有关图像的文章...但是无法将其作为普通图像加载。

有人可以指出我的文档或举一个简单的例子来说明这一点吗?我们同时使用链轮和webpacker,并且仍然使用Rails 5.1(我知道我们需要更新...)

解决方法

npm软件包已安装到<rails root>/node_modules,所以没有什么可以阻止您执行此操作:

# config/initializers/assets.rb:

Rails.application.configure do
  # ...
  config.assets.paths << Rails.root.join('node_modules')
  # ...
end

(或仅是单个软件包的路径)

,然后像使用常规链轮your_package/some_file.svg一样使用它们(可能还需要添加到清单文件/预编译文件中),文件路径将取决于您的包结构。