首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Webpacker如何确定在Rails6 (.svg等)中导入媒体的路径?

Webpacker如何确定在Rails6 (.svg等)中导入媒体的路径?
EN

Stack Overflow用户
提问于 2021-06-23 04:00:28
回答 1查看 26关注 0票数 0

我正在使用Streamline图标。我这样导入一个svg图标:

代码语言:javascript
复制
import Icon from '@streamlinehq/streamlinehq/img/streamline-light/users/geomertic-close-up-multiple-users/multiple-neutral-2.svg'

svg图标最终在以下位置编译:/packs/media/geomertic-close-up-multiple-users/multiple-neutral-2-6a0b9211.svg

我知道/packs/media是媒体元素(图片,字体,svg等)的默认格式,但是其他的呢?Webpacker是如何决定不包括以前的文件夹的,比如streamline-light/users

这是在哪里配置的,或者是在什么级别配置的?

我之所以问这个问题,是因为有不同的字体系列,每个字体中的图标都有相似的名称。因此,如果族名称未包含在已编译资源的路径中,则会导致问题。

EN

回答 1

Stack Overflow用户

发布于 2021-06-24 00:09:17

我最终为这些图标创建了一个自定义加载器。我认为我看到的问题在rails配置webpack的方式上是意料之中的。

如果我错了,请纠正我,或者回复一个更好的答案,我会接受的:)

代码语言:javascript
复制
const { environment } = require('@rails/webpacker');
const { join } = require('path');

const streamlinehqIconRegexp = /.*@streamlinehq.*\.(svg)$/i;

environment.loaders.get('file').exclude = streamlinehqIconRegexp;

module.exports = {
  test: streamlinehqIconRegexp,
  use: [
    {
      loader: "file-loader",
      options: {
        name: (fullPath) => {
          let iconFamily = fullPath.match(/img\/streamline-([^\/]+)/)[1]

          if (iconFamily == "light")
            iconFamily = "";

          return join(
            "media/icons",
            iconFamily,
            "[name]-[hash:8].[ext]"
          );
        }
      },
    }
  ]
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68090073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档