lzdjack
2023-01-30 6753e24b3d3d4b2f3d8ce85541a1d624d9bf0fb1
提交 | 用户 | age
07c18d 1 /**
V 2  *  Introduces component library styles on demand.
3  * https://github.com/anncwb/vite-plugin-style-import
4  */
6753e2 5 import { createStyleImportPlugin, VxeTableResolve } from 'vite-plugin-style-import';
c2f654 6
52257f 7 export function configStyleImportPlugin(_isBuild: boolean) {
2abc82 8   if (!_isBuild) {
A 9     return [];
10   }
af6ab9 11   const styleImportPlugin = createStyleImportPlugin({
c2f654 12     libs: [
V 13       {
14         libraryName: 'ant-design-vue',
6392b7 15         esModule: true,
c2f654 16         resolveStyle: (name) => {
d6cdff 17           // 这里是无需额外引入样式文件的“子组件”列表
8b0011 18           const ignoreList = [
19             'anchor-link',
20             'sub-menu',
21             'menu-item',
52257f 22             'menu-divider',
8b0011 23             'menu-item-group',
24             'breadcrumb-item',
25             'breadcrumb-separator',
26             'form-item',
27             'step',
28             'select-option',
29             'select-opt-group',
30             'card-grid',
31             'card-meta',
32             'collapse-panel',
33             'descriptions-item',
34             'list-item',
35             'list-item-meta',
36             'table-column',
37             'table-column-group',
38             'tab-pane',
39             'tab-content',
40             'timeline-item',
41             'tree-node',
42             'skeleton-input',
43             'skeleton-avatar',
44             'skeleton-title',
45             'skeleton-paragraph',
46             'skeleton-image',
47             'skeleton-button',
48           ];
d6cdff 49           // 这里是需要额外引入样式的子组件列表
M 50           // 单独引入子组件时需引入组件样式,否则会在打包后导致子组件样式丢失
51           const replaceList = {
404128 52             textarea: 'input',
d6cdff 53             'typography-text': 'typography',
M 54             'typography-title': 'typography',
55             'typography-paragraph': 'typography',
56             'typography-link': 'typography',
57             'dropdown-button': 'dropdown',
58             'input-password': 'input',
59             'input-search': 'input',
60             'input-group': 'input',
61             'radio-group': 'radio',
62             'checkbox-group': 'checkbox',
63             'layout-sider': 'layout',
64             'layout-content': 'layout',
65             'layout-footer': 'layout',
66             'layout-header': 'layout',
67             'month-picker': 'date-picker',
8932bf 68             'range-picker': 'date-picker',
c00153 69             'image-preview-group': 'image',
d6cdff 70           };
M 71
72           return ignoreList.includes(name)
73             ? ''
74             : replaceList.hasOwnProperty(name)
75             ? `ant-design-vue/es/${replaceList[name]}/style/index`
76             : `ant-design-vue/es/${name}/style/index`;
c2f654 77         },
V 78       },
79     ],
6753e2 80     resolves: [VxeTableResolve()],
c2f654 81   });
a7c8c6 82   return styleImportPlugin;
c2f654 83 }