/** * @program: kicc-ui * @description: vite-plugin-style-import配置 * 提供对vite的按需引入组件库样式功能 * 文档: https://github.com/anncwb/vite-plugin-style-import * @author: entfrm开发团队-王翔 * @create: 2022/4/5 */ import { createStyleImportPlugin } from 'vite-plugin-style-import'; export function configStyleImportPlugin() { const styleImportPlugin = createStyleImportPlugin({ libs: [ { // 需要导入库名 libraryName: 'ant-design-vue', // 如果样式文件不是.css后缀,需要开启这个选项 esModule: true, // 自定义样式文件转换 resolveStyle: (name) => { // 这里是无需额外引入样式文件的“子组件”列表 const ignoreList = [ 'anchor-link', 'sub-menu', 'menu-item', 'menu-divider', 'menu-item-group', 'breadcrumb-item', 'breadcrumb-separator', 'form-item', 'step', 'select-option', 'select-opt-group', 'card-grid', 'card-meta', 'collapse-panel', 'descriptions-item', 'list-item', 'list-item-meta', 'table-column', 'table-column-group', 'tab-pane', 'tab-content', 'timeline-item', 'tree-node', 'skeleton-input', 'skeleton-avatar', 'skeleton-title', 'skeleton-paragraph', 'skeleton-image', 'skeleton-button', ]; // 这里是需要额外引入样式的子组件列表 // 单独引入子组件时需引入组件样式,否则会在打包后导致子组件样式丢失 const replaceList = { 'typography-text': 'typography', 'typography-title': 'typography', 'typography-paragraph': 'typography', 'typography-link': 'typography', 'dropdown-button': 'dropdown', 'input-password': 'input', 'input-search': 'input', 'input-group': 'input', 'radio-group': 'radio', 'checkbox-group': 'checkbox', 'layout-sider': 'layout', 'layout-content': 'layout', 'layout-footer': 'layout', 'layout-header': 'layout', 'month-picker': 'date-picker', 'range-picker': 'date-picker', 'image-preview-group': 'image', }; return ignoreList.includes(name) ? '' : replaceList.hasOwnProperty(name) ? `ant-design-vue/es/${replaceList[name]}/style/index` : `ant-design-vue/es/${name}/style/index`; } }, { // 按需加载vxe-table组件 libraryName: 'vxe-table', esModule: true, resolveStyle: (name) => `vxe-table/es/${name}/style.css` } ] }); return styleImportPlugin; }