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

How to load an svg from an npm package in rails?

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

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

有人可以指点我文档或举一个简单的例子来说明如何做到这一点吗?我们同时使用 sprockets 和 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(可能还需要添加到 manifest/precompiled 文件),文件路径将取决于您的包结构。