vue2.x搭建saas项目系列之五:svg icon统一管理

此篇幅主要介绍、我们是如何做svg icon的统一管理,如有不足和建议请留言,在此感谢,项目目前阶段还处在少年,一直在迭代

目录结构如图  

svg的文件可以从iconfont下载

这里主要介绍下如何配置的

1.安装vue-svgicon

npm install vue-svgicon -D

2.package.json scripts

"svg": "vsvg -s ./src/icons/svg -t ./src/icons/components --ext ts --es6"

3.main.ts 引入 

// svg
import SvgIcon from 'vue-svgicon'
Vue.use(SvgIcon, {
  tagName: 'svg-icon',
  defaultWidth: '2em',
  defaultHeight: '2em'
})

4.每当在 `icons/svg` 文件夹内添加 icon 之后,可以通过执行 `npm run svg` 来重新生成所有组件 

5.项目中使用

<svg-icon
   class="mt-3"
   name="invertedTriangle"
   width="11" 
   height="8"
 />

到此,svg icon统一管理-文章结束,原创不易,感谢浏览!

const { defineConfig } = require('@vue/cli-service') const express = require('express'); const path = require('path'); const wecodePlugin = require('@wedev/wecode-webpack-plugin'); const CopyPlugin = require('copy-webpack-plugin'); const { WECODE_ENV = 'development', } = process.env; const ISLOCALDEV = WECODE_ENV === 'development'; const resolveApp = relativePath => path.resolve(path.resolve(__dirname), relativePath); module.exports = defineConfig({ publicPath: './', outputDir: 'dist', assetsDir: 'assets', transpileDependencies: true, configureWebpack: { plugins: [ new wecodePlugin({ port: 8080, host: "localhost.huawei.com", open: false }), new CopyPlugin([ ISLOCALDEV && { from: resolveApp('node_modules/@wedev/wecode-jsapi-sdk/dist/index.js'), to: resolveApp('dist/common/js/hwh5.js') }, ISLOCALDEV && { from: resolveApp('node_modules/@wedev/wecode-jsapi-sdk/dist/hwh5.css'), to: resolveApp('dist/common/css/hwh5.css') }, ].filter(Boolean)) ] }, chainWebpack: (config) => { config.resolve.alias.set('@aurora/theme', '@aurora/theme-saas') config.resolve.alias.set('@aurora/vue3-icon', '@aurora/vue3-icon-saas') }, devServer:{ setupMiddlewares: (middlewares, devServer) => { if (!devServer) { throw new Error('webpack-dev-server is not defined'); } const commonPath = path.join(__dirname, 'node_modules/@wecode/wlk-jsapi/lib'); devServer.app.use(express.static(path.join(commonPath))) return middlewares }, host: 'localhost.huawei.com', }, css: { loaderOptions: { postcss: { postcssOptions: { plugins: [ require('postcss-px-to-viewport')({ unitToConvert: 'px', viewportWidth: 750, unitPrecision: 5, propList: ['*'], viewportUnit: 'vw', fontViewportUnit: 'vw', selectorBlackList: [], minPixelValue: 1, mediaQuery: false, replace: true, exclude: /(\/|\\)(node_modules)(\/|\\)/ }), ] } } } } }) 上面配置怎么处理这个报错:Building for production...D:\project3\backup\1\1\pam-mobile-develop\pam-mobile-develop\node_modules\webpack\lib\SourceMapDevToolPlugin.js:108 sourceMap = /** @type {SourceMap} */ (asset.map(options)); ^ TypeError: asset.map is not a function at getTaskForFile (D:\project3\backup\1\1\pam-mobile-develop\pam-mobile-develop\node_modules\webpack\lib\SourceMapDevToolPlugin.js:108:47) at D:\project3\backup\1\1\pam-mobile-develop\pam-mobile-develop\node_modules\webpack\lib\SourceMapDevToolPlugin.js:296:22 at D:\project3\backup\1\1\pam-mobile-develop\pam-mobile-develop\node_modules\webpack\lib\Cache.js:97:5 at Hook.eval [as callAsync] (eval at create (D:\project3\backup\1\1\pam-mobile-develop\pam-mobile-develop\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:6:1) at Cache.get (D:\project3\backup\1\1\pam-mobile-develop\pam-mobile-develop\node_modules\webpack\lib\Cache.js:79:18) at ItemCacheFacade.get (D:\project3\backup\1\1\pam-mobile-develop\pam-mobile-develop\node_modules\webpack\lib\CacheFacade.js:115:15) at D:\project3\backup\1\1\pam-mobile-develop\pam-mobile-develop\node_modules\webpack\lib\SourceMapDevToolPlugin.js:247:18 at arrayEach (D:\project3\backup\1\1\pam-mobile-develop\pam-mobile-develop\node_modules\neo-async\async.js:2405:9) at Object.each (D:\project3\backup\1\1\pam-mobile-develop\pam-mobile-develop\node_modules\neo-async\async.js:2846:9) at D:\project3\backup\1\1\pam-mobile-develop\pam-mobile-develop\node_modules\webpack\lib\SourceMapDevToolPlugin.js:229:15 at D:\project3\backup\1\1\pam-mobile-develop\pam-mobile-develop\node_modules\webpack\lib\Compilation.js:514:18 at Hook.eval [as callAsync] (eval at create (D:\project3\backup\1\1\pam-mobile-develop\pam-mobile-develop\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:35:1) at D:\project3\backup\1\1\pam-mobile-develop\pam-mobile-develop\node_modules\webpack\lib\Compilation.js:528:46 at D:\project3\backup\1\1\pam-mobile-develop\pam-mobile-develop\node_modules\html-webpack-plugin\index.js:1165:7 at process.processTicksAndRejections (node:internal/process/task_queues:95:5) Node.js v20.19.4
最新发布
09-10
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值