使用svg-sprite-loader引入icon
阿里icon网站 www.iconfont.cn/
TypeScript 引入 svg
stackoverflow.com/questions/4…
配置文件 vue.config.js
const path = require('path')
module.exports = {
lintOnSave: false,
chainWebpack: config => {
const dir = path.resolve(__dirname,'src/assets/icons')
config.module
.rule('svg-sprite')
.test(/\.svg$/)
.include.add(dir).end() //包含 icons 目录
.use('svg-sprite-loader').loader('svg-sprite-loader').options({extract:false}).end()
.use('svgo-loader').loader('svgo-loader')
.tap(options=>({...options,plugins:[{removeAttrs:{attr:'fill'}}]})).end()
config.plugin('svg-sprite').use(require('svg-sprite-loader/plugin'),[{plainSprite:true}])
config.module.rule('svg').exclude.add(dir) // 其他 svg loader 排除 icons 目录
}
}
如何 import 一个目录,统一引入一个目录下的svg
const importAll = (requireContext: __WebpackModuleApi.RequireContext) => requireContext.keys().forEach(requireContext);
try {importAll(require.context('../assets/icons', true, /\.svg$/));} catch (error) {console.log(error);}