背景:
Vue-CLI创建的项目,想要用自定义的icon,icon是在阿里icon-font下载的svg文件,直接使用import xxx from '@/assets/icons/xxx.svg'
TS编译报错,称无法找到此模块(插播一条小百科:svg 是使用 XML 格式定义图像)。
StackOverFlow上有人提出,在项目文件中添加一个custom.d.ts的文件,写上以下内容:
declare module '*.svg'{
const content: string;
export default content;
}
于是我把以上内容,加在了shims.vue.d.ts这个类似的文件里。
于是TS不报错了,console.log(xxx)结果是一个类似/img/xxx.[hash:8].svg的路径,这又是啥?我是谁?我在哪?
所以我们只解决了TS编译时的报错红线
为了能够引用svg,就要用到svg-sprite-loader
可是,JetBrain给的教程是webpack.config.js的配置,鹅vue.config.js中还得稍微翻译一下的,因为配的规则有点麻烦,建议用链式配置。
chainWebpack中文文档了解一下!
const path = require('path') //配置需要用到路径,故引入一下
module.exports = {
lintOnSave: false,
chainWebpack: config => {
const dir = path.resolve('src/assets/icons') //指定icon存放路径
config.module
.rule('svg-sprite') //规则名 :svg-sprite
.test(/\.svg$/) //使用条件:.svg结尾的文件
.include