如何解决Webpacker 如何确定 Rails 6.svg 等中导入媒体的路径?
我正在使用 Streamline 图标。我以这种方式导入了一个 svg 图标:
import Icon from '@streamlinehq/streamlinehq/img/streamline-light/users/geomertic-close-up-multiple-users/multiple-neutral-2.svg'
svg 图标最终在以下位置编译:{{1}}
我知道 /packs/media/geomertic-close-up-multiple-users/multiple-neutral-2-6a0b9211.svg
是媒体元素(图像、字体、svgs 等)的默认值,但其余的呢? Webpacker 是如何决定不包含以前的文件夹(如 /packs/media
)的?
在哪里或在什么级别配置?
我之所以这么问是因为有不同的字体系列,其中每个图标的名称都相似。因此,如果编译资产的路径中不包含姓氏,则会导致问题。
解决方法
我最终为这些图标创建了一个自定义加载器。我认为我看到的问题应该是通过 Rails 配置 webpack 的方式来解决的。
如果我错了,请纠正我,或者用更好的答案回复,我会接受:)
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]"
);
}
},}
]
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。