From 7f72034b89e85ad0173cdfaff95941dd720569ba Mon Sep 17 00:00:00 2001 From: yuzheng14 <422450117@qq.com> Date: Wed, 18 Jan 2023 01:19:47 +0000 Subject: [PATCH 1/3] feat(core/resolvers/antdv.ts): add option.resolvePrefix to decide to resolve prefix 'A' or not --- src/core/resolvers/antdv.ts | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/core/resolvers/antdv.ts b/src/core/resolvers/antdv.ts index e3386628..03762c7b 100644 --- a/src/core/resolvers/antdv.ts +++ b/src/core/resolvers/antdv.ts @@ -199,6 +199,10 @@ export interface AntDesignVueResolverOptions { * @default 'ant-design-vue' */ packageName?: string + /** + * resolve prefix 'A' ? + */ + resolvePrefix?: boolean } function getStyleDir(compName: string): string { @@ -238,12 +242,11 @@ function getSideEffects(compName: string, options: AntDesignVueResolverOptions): } } const primitiveNames = ['Affix', 'Anchor', 'AnchorLink', 'AutoComplete', 'AutoCompleteOptGroup', 'AutoCompleteOption', 'Alert', 'Avatar', 'AvatarGroup', 'BackTop', 'Badge', 'BadgeRibbon', 'Breadcrumb', 'BreadcrumbItem', 'BreadcrumbSeparator', 'Button', 'ButtonGroup', 'Calendar', 'Card', 'CardGrid', 'CardMeta', 'Collapse', 'CollapsePanel', 'Carousel', 'Cascader', 'Checkbox', 'CheckboxGroup', 'Col', 'Comment', 'ConfigProvider', 'DatePicker', 'MonthPicker', 'WeekPicker', 'RangePicker', 'QuarterPicker', 'Descriptions', 'DescriptionsItem', 'Divider', 'Dropdown', 'DropdownButton', 'Drawer', 'Empty', 'Form', 'FormItem', 'FormItemRest', 'Grid', 'Input', 'InputGroup', 'InputPassword', 'InputSearch', 'Textarea', 'Image', 'ImagePreviewGroup', 'InputNumber', 'Layout', 'LayoutHeader', 'LayoutSider', 'LayoutFooter', 'LayoutContent', 'List', 'ListItem', 'ListItemMeta', 'Menu', 'MenuDivider', 'MenuItem', 'MenuItemGroup', 'SubMenu', 'Mentions', 'MentionsOption', 'Modal', 'Statistic', 'StatisticCountdown', 'PageHeader', 'Pagination', 'Popconfirm', 'Popover', 'Progress', 'Radio', 'RadioButton', 'RadioGroup', 'Rate', 'Result', 'Row', 'Select', 'SelectOptGroup', 'SelectOption', 'Skeleton', 'SkeletonButton', 'SkeletonAvatar', 'SkeletonInput', 'SkeletonImage', 'Slider', 'Space', 'Spin', 'Steps', 'Step', 'Switch', 'Table', 'TableColumn', 'TableColumnGroup', 'TableSummary', 'TableSummaryRow', 'TableSummaryCell', 'Transfer', 'Tree', 'TreeNode', 'DirectoryTree', 'TreeSelect', 'TreeSelectNode', 'Tabs', 'TabPane', 'Tag', 'CheckableTag', 'TimePicker', 'TimeRangePicker', 'Timeline', 'TimelineItem', 'Tooltip', 'Typography', 'TypographyLink', 'TypographyParagraph', 'TypographyText', 'TypographyTitle', 'Upload', 'UploadDragger', 'LocaleProvider'] -const prefix = 'A' let antdvNames: Set function genAntdNames(primitiveNames: string[]): void { - antdvNames = new Set(primitiveNames.map(name => `${prefix}${name}`)) + antdvNames = new Set(primitiveNames) } genAntdNames(primitiveNames) @@ -273,15 +276,14 @@ export function AntDesignVueResolver(options: AntDesignVueResolverOptions = { from: '@ant-design/icons-vue', } } - + (options?.resolvePrefix === undefined || options.resolvePrefix) && (name = name.slice(1)) if (isAntdv(name) && !options?.exclude?.includes(name)) { - const importName = name.slice(1) const { cjs = false, packageName = 'ant-design-vue' } = options const path = `${packageName}/${cjs ? 'lib' : 'es'}` return { - name: importName, + name, from: path, - sideEffects: getSideEffects(importName, options), + sideEffects: getSideEffects(name, options), } } }, From b8c5bc6a3f00469d76fea3b07dccd7f9cb1244fe Mon Sep 17 00:00:00 2001 From: yuzheng14 <422450117@qq.com> Date: Wed, 18 Jan 2023 01:59:10 +0000 Subject: [PATCH 2/3] style(core/resolvers/antdv.ts): add comment --- src/core/resolvers/antdv.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/core/resolvers/antdv.ts b/src/core/resolvers/antdv.ts index 03762c7b..b3b09312 100644 --- a/src/core/resolvers/antdv.ts +++ b/src/core/resolvers/antdv.ts @@ -246,6 +246,8 @@ const primitiveNames = ['Affix', 'Anchor', 'AnchorLink', 'AutoComplete', 'AutoCo let antdvNames: Set function genAntdNames(primitiveNames: string[]): void { + // use primitiveNames to construct antdvNames, + // in order to make options.resolvePrefix compatible antdvNames = new Set(primitiveNames) } genAntdNames(primitiveNames) @@ -276,6 +278,9 @@ export function AntDesignVueResolver(options: AntDesignVueResolverOptions = { from: '@ant-design/icons-vue', } } + // if options.resolvePrefix is undefined or true, + // then eg.'ALayout' -> 'Layout', + // and use `name` directly in the following content (options?.resolvePrefix === undefined || options.resolvePrefix) && (name = name.slice(1)) if (isAntdv(name) && !options?.exclude?.includes(name)) { const { cjs = false, packageName = 'ant-design-vue' } = options From a433870131e465040d77895dc7bbe9e57ef9a1e8 Mon Sep 17 00:00:00 2001 From: yuzheng14 <422450117@qq.com> Date: Wed, 18 Jan 2023 13:36:46 +0000 Subject: [PATCH 3/3] feat(core/resolvers/antdv.ts): modify options.resolvePrefix to options.prefix - You can use options.prefix to customize prefix whatever you want. --- src/core/resolvers/antdv.ts | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/core/resolvers/antdv.ts b/src/core/resolvers/antdv.ts index b3b09312..18509ad1 100644 --- a/src/core/resolvers/antdv.ts +++ b/src/core/resolvers/antdv.ts @@ -200,9 +200,9 @@ export interface AntDesignVueResolverOptions { */ packageName?: string /** - * resolve prefix 'A' ? + * customize prefix of component */ - resolvePrefix?: boolean + prefix?: string } function getStyleDir(compName: string): string { @@ -272,17 +272,18 @@ export function AntDesignVueResolver(options: AntDesignVueResolverOptions = { return { type: 'component', resolve: (name: string) => { + // if options.prefix is undefined, then give it a default value 'A' + options.prefix === undefined && (options.prefix = 'A') if (options.resolveIcons && name.match(/(Outlined|Filled|TwoTone)$/)) { return { name, from: '@ant-design/icons-vue', } } - // if options.resolvePrefix is undefined or true, - // then eg.'ALayout' -> 'Layout', - // and use `name` directly in the following content - (options?.resolvePrefix === undefined || options.resolvePrefix) && (name = name.slice(1)) - if (isAntdv(name) && !options?.exclude?.includes(name)) { + let prefix + // divide component name and prefix + [name, prefix] = [name.slice(options.prefix.length), name.slice(0, options.prefix.length)] + if (prefix === options.prefix && isAntdv(name) && !options?.exclude?.includes(name)) { const { cjs = false, packageName = 'ant-design-vue' } = options const path = `${packageName}/${cjs ? 'lib' : 'es'}` return {