UNPKG

unplugin-antd-resolver

Version:

unplugin-antd-resolver 用于在 unplugin-auto-import 中实现 antd 组件的按需引入。

117 lines (113 loc) 1.96 kB
const antdBuiltInComponents = [ "Affix", "Alert", "Anchor", "App", "AutoComplete", "Avatar", "BackTop", "Badge", "Breadcrumb", "Button", "Calendar", "Card", "Carousel", "Cascader", "Checkbox", "Col", "Collapse", "ColorPicker", "ConfigProvider", "DatePicker", "Descriptions", "Divider", "Drawer", "Dropdown", "Empty", "Flex", "FloatButton", "Form", "Grid", "Image", "Input", "InputNumber", "Layout", "List", "Mentions", "Menu", "message", "Modal", "notification", "Pagination", "Popconfirm", "Popover", "Progress", "QRCode", "Radio", "Rate", "Result", "Row", "Segmented", "Select", "Skeleton", "Slider", "Space", "Spin", "Statistic", "Steps", "Switch", "Table", "Tabs", "Tag", "theme", "TimePicker", "Timeline", "Tooltip", "Tour", "Transfer", "Tree", "TreeSelect", "Typography", "Upload", "Watermark" ]; function dealComponentName(name) { if (/^[a-z]/.test(name)) { return name[0].toUpperCase() + name.slice(1); } return name; } function getAntdComponentsMap(prefix) { return antdBuiltInComponents.reduce( (map, name) => map.set(`${prefix ?? ""}${dealComponentName(name)}`, name), /* @__PURE__ */ new Map() ); } const antdResolver = (options = {}) => { const { prefix, packageName = "antd" } = options; const antdComponentsMap = getAntdComponentsMap(prefix); return { type: "component", resolve: (originName) => { if (!prefix) { if (antdBuiltInComponents.includes(originName)) { return { name: originName, from: packageName }; } } else { const name = antdComponentsMap.get(originName); if (name) { return { name, as: originName, from: packageName }; } } return void 0; } }; }; export { antdResolver as default };