javascript - assets 路径是指 webpack 构建后已安装包中的主应用程序
问题描述
我有一个内部使用 webpack 构建的 vue js ui 组件。这个可重用的 ui 组件库引用了它的图像,如下所示:
<img src="./assets/logo.png"/>
<img src="./assets/edit-icon.svg"/>
<img src="./assets/delete-icon.svg"/>
当我将此组件构建为库时,dist 文件夹在 dist -> img 有图像。当我在带有 npm install 的主应用程序中使用此组件时,该组件无法呈现图像,因为它们所指的路径是相对于主应用程序的。
<img data-v-ad50538c="" src="http://localhost:8080/js/img/delete-icon.92d078a1.svg">
我应用了以下修复来临时解决问题,它适用于 svg 文件,但我还有其他文件 png、jpg .. 等
module.exports = {
chainWebpack: config => {
const svgRule = config.module.rule('svg')
svgRule.uses.clear()
svgRule
.test(/\.svg$/)
.use('svg-url-loader')
.loader('svg-url-loader')
}
};
我不确定如何为资产文件夹中可能拥有的所有文件修复此问题。我有一堆 ui 库组件,它们使用大量资产。
解决方案
您的问题是您使用的是相对路径。一个简单的转义方法是将前缀替换.
为@
. 而不是相对路径。Vue/Webpack 应该做剩下的事情。
// replace
<img src="./assets/logo.png"/>
//with
<img src="@/assets/logo.png"/>
推荐阅读
- android - 为什么 AsyncTask 不能实现除 doInBackground 之外的方法?
- angular - Angular Sidebar Treeview 没有响应
- python - 弹出一个负数有效但不为零
- javascript - 我可以将 html 元素的值附加/推送到从表单中的 html 表生成的数组的每一行吗?
- node.js - 如何返回我的数据库中的博客并通过根据最新的排序来呈现它们?
- javascript - 为什么移除子元素的onClick需要点击两次?
- python - 如果 Python3 静态与 vim 一起使用,是否需要存在 Python3 才能在 vim 中使用“py3”?
- android - react-native-camera 无法读取 android 上未定义的属性“常量”
- java - java.text.ParseException:无法解析的日期:“20:01:00.000Z”
- c++11 - 当行长于数组时,如何将一行读入char数组?