Skip to content

Commit f88402a

Browse files
yuzheng14sxzz
authored andcommitted
feat(antdv): customize prefix whatever you want (#616)
1 parent 534fbfa commit f88402a

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

src/core/resolvers/antdv.ts

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,10 @@ export interface AntDesignVueResolverOptions {
208208
* @default 'ant-design-vue'
209209
*/
210210
packageName?: string
211+
/**
212+
* customize prefix of component
213+
*/
214+
prefix?: string
211215
}
212216

213217
function getStyleDir(compName: string): string {
@@ -247,12 +251,13 @@ function getSideEffects(compName: string, options: AntDesignVueResolverOptions):
247251
}
248252
}
249253
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', 'FloatButton', 'FloatButtonGroup', 'Qrcode', 'Watermark', 'Segmented', 'Tour']
250-
const prefix = 'A'
251254

252255
let antdvNames: Set<string>
253256

254257
function genAntdNames(primitiveNames: string[]): void {
255-
antdvNames = new Set(primitiveNames.map(name => `${prefix}${name}`))
258+
// use primitiveNames to construct antdvNames,
259+
// in order to make options.resolvePrefix compatible
260+
antdvNames = new Set(primitiveNames)
256261
}
257262
genAntdNames(primitiveNames)
258263

@@ -282,22 +287,25 @@ export function AntDesignVueResolver(options: AntDesignVueResolverOptions = {
282287
return {
283288
type: 'component',
284289
resolve: (name: string) => {
290+
// if options.prefix is undefined, then give it a default value 'A'
291+
options.prefix === undefined && (options.prefix = 'A')
285292
if (options.resolveIcons && name.match(/(Outlined|Filled|TwoTone)$/)) {
286293
return {
287294
name,
288295
from: '@ant-design/icons-vue',
289296
}
290297
}
291-
292-
if (isAntdv(name) && !options?.exclude?.includes(name)) {
293-
const importName = name.slice(1)
298+
let prefix
299+
// divide component name and prefix
300+
[name, prefix] = [name.slice(options.prefix.length), name.slice(0, options.prefix.length)]
301+
if (prefix === options.prefix && isAntdv(name) && !options?.exclude?.includes(name)) {
294302
// console.log('importName----', importName)
295303
const { cjs = false, packageName = 'ant-design-vue' } = options
296304
const path = `${packageName}/${cjs ? 'lib' : 'es'}`
297305
return {
298306
name: getImportName(importName),
299307
from: path,
300-
sideEffects: getSideEffects(importName, options),
308+
sideEffects: getSideEffects(name, options),
301309
}
302310
}
303311
},

0 commit comments

Comments
 (0)