Я создал проект Vuejs с использованием @ vue / cli версии 3.0.0-beta.16, и в моем отдельном файловом компоненте Home.vue я хочу импортировать и добавить встроенный SVG в шаблон, но у меня возникают проблемы при этом.
Проблема в том, что vue cli уже использует расширение файла .svg для загрузчика файлов, например так:
webpackConfig.module
.rule('svg')
.test(/\.(svg)(\?.*)?$/)
.use('file-loader')
.loader('file-loader')
.options({
name: getAssetPath(options, `img/[name].[hash:8].[ext]`)
})
Я уже пробовал использовать плагин html-loader для включения svg в шаблони он работает нормально, если я очищаю использование svg по умолчанию в моем vue.config.js и добавляю свой собственный загрузчик следующим образом:
// vue.config.js
chainWebpack: config => {
const svgRule = config.module.rule('svg')
// clear all existing loaders.
// if you don't do this, the loader below will be appended to
// existing loaders of the rule.
svgRule.uses.clear()
// add replacement loader(s)
svgRule
.test(/\.(svg)$/)
.use('html-loader')
.loader('html-loader')
.options({
})
}
и в моем шаблоне:
// Home.vue
<div v-html="require('./../assets/inline.svg')"></div>
Нопроблема в том, что он также заменяет svg src в тегах <img />
на встроенный svg-код.Я хочу использовать file-loader для <img src="something.svg" />
и html-loader для require('./inline.svg')
.Как использовать несколько загрузчиков для одного и того же правила в веб-пакете?Или это правильный подход?Буду признателен за любую помощь.
Редактировать Я думаю, проблема в том, что я добавляю оба загрузчика неправильно.Вот как я добавляю их в свой файл:
// vue.config.js
svgRule
.test(/\.(svg)$/)
.use('file-loader')
.loader('file-loader')
.options({
name: getAssetPath(options, `img/[name].[ext]`)
})
svgRule
.test(/\.(svg)$/)
.use('html-loader')
.loader('html-loader')
.options({
attrs: ['div:v-html']
})