From b452eb2b82e1aa8076fb063fe5bffbcf940b285b Mon Sep 17 00:00:00 2001 From: markthree <1801982702@qq.com> Date: Wed, 18 May 2022 16:19:14 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9B=B4=E5=A4=9A=E7=9A=84=20ui=20?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=BC=95=E5=85=A5(=E4=BB=85=E5=AE=89?= =?UTF-8?q?=E8=A3=85=E6=89=8D=E4=BC=9A=E7=94=9F=E6=95=88)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 22 ++++++++++++++---- package.json | 2 +- pnpm-lock.yaml | 2 ++ presets/shared/resolvers.ts | 22 ++++++++++++++++++ presets/tov.ts | 46 +++++++++++++++++++++++++++++-------- 5 files changed, 78 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 51e3922..935c648 100644 --- a/README.md +++ b/README.md @@ -591,11 +591,23 @@ pnpm add naive-ui 目前支持的组件库有: -- [naive ui](https://www.naiveui.com/zh-CN/os-theme) -- [arco.design](https://arco.design/) -- [element-plus](https://element-plus.gitee.io/zh-CN/) -- [ant design of vue](https://next.antdv.com/docs/vue/introduce-cn/) -- [@vueuse/components](https://vueuse.org/guide/components.html) +[vant](https://github.com/youzan/vant) +[idux](https://github.com/IDuxFE/idux) +[devui](https://github.com/DevCloudFE/vue-devui) +[quasar](https://github.com/quasarframework/quasar) +[varlet](https://github.com/varletjs/varlet) +[inkline](https://github.com/inkline/inkline) +[vuetify](https://github.com/vuetifyjs/vuetify) +[naive-ui](https://github.com/TuSimple/naive-ui) +[primevue](https://github.com/primefaces/primevue) +[layui-vue](https://gitee.com/layui/layui-vue) +[view-design](https://iviewui.com/) +[arco-design](https://github.com/arco-design/arco-design) +[element-plus](https://github.com/element-plus/element-plus) +[ant-design-vue](https://github.com/vueComponent/ant-design-vue) +[@headlessui/vue](https://github.com/tailwindlabs/headlessui) +[tdesign-vue-next](https://github.com/Tencent/tdesign-vue-next) +[@vueuse/components](https://github.com/vueuse/vueuse/tree/main/packages/components) 具体可见 👉 [unplugin-vue-components](https://github.com/antfu/unplugin-vue-components) diff --git a/package.json b/package.json index 8f7c883..9e28f3f 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,6 @@ "@typescript-eslint/parser": "^5.23.0", "@vitejs/plugin-vue": "^2.3.3", "@vitejs/plugin-vue-jsx": "^1.3.10", - "@vueuse/components": "^8.4.2", "@vueuse/core": "^8.4.2", "axios": "^0.26.1", "c8": "^7.11.2", @@ -49,6 +48,7 @@ "husky": "^7.0.4", "ityped": "^1.0.3", "lint-staged": "^12.4.1", + "local-pkg": "^0.4.1", "markdown-it-anchor": "^8.6.4", "markdown-it-prism": "^2.2.4", "mockjs": "^1.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8511dbc..07c97fa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,6 +21,7 @@ specifiers: husky: ^7.0.4 ityped: ^1.0.3 lint-staged: ^12.4.1 + local-pkg: ^0.4.1 markdown-it-anchor: ^8.6.4 markdown-it-prism: ^2.2.4 mockjs: ^1.1.0 @@ -76,6 +77,7 @@ devDependencies: husky: 7.0.4 ityped: 1.0.3 lint-staged: 12.4.1 + local-pkg: 0.4.1 markdown-it-anchor: 8.6.4 markdown-it-prism: 2.2.4 mockjs: 1.1.0 diff --git a/presets/shared/resolvers.ts b/presets/shared/resolvers.ts index 10e23be..bd91560 100644 --- a/presets/shared/resolvers.ts +++ b/presets/shared/resolvers.ts @@ -1,7 +1,9 @@ import { env } from './env' +import { isPackageExists } from 'local-pkg' import { dirResolver } from 'vite-auto-import-resolvers' import type { Resolver } from 'unplugin-auto-import/types' import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' +import type { ComponentResolver } from 'unplugin-vue-components/types' type Arrayable = T | Array type Resolvers = Arrayable> @@ -17,3 +19,23 @@ if (env.VITE_APP_DIR_API_AUTO_IMPORT) { }) ) } + +interface Options { + onlyExist?: [Arrayable, string][] + include?: ComponentResolver[] +} +export const normalizeResolvers = (options: Options = {}) => { + const { onlyExist = [], include = [] } = options + + const existedResolvers = [] + for (let i = 0; i < onlyExist.length; i++) { + const [resolver, packageName] = onlyExist[i] + if (isPackageExists(packageName)) { + existedResolvers.push(resolver) + } + } + + existedResolvers.push(...include) + + return existedResolvers +} diff --git a/presets/tov.ts b/presets/tov.ts index f84c13a..d7cb459 100644 --- a/presets/tov.ts +++ b/presets/tov.ts @@ -21,14 +21,26 @@ import { markdownWrapperClasses } from './plugins/markdown' import { DirResolverHelper } from 'vite-auto-import-resolvers' import { ArcoResolver, + IduxResolver, + VantResolver, + DevUiResolver, + QuasarResolver, + ViewUiResolver, + InklineResolver, + TDesignResolver, NaiveUiResolver, - AntDesignVueResolver, + Vuetify3Resolver, + VarletUIResolver, + LayuiVueResolver, + PrimeVueResolver, + HeadlessUiResolver, ElementPlusResolver, + AntDesignVueResolver, VueUseComponentsResolver, } from 'unplugin-vue-components/resolvers' import Modules from 'vite-plugin-use-modules' import { GenerateTitle } from './plugins/html' -import { AutoImportResolvers } from './shared/resolvers' +import { AutoImportResolvers, normalizeResolvers } from './shared/resolvers' export default () => { return [ @@ -71,14 +83,28 @@ export default () => { extensions: ['vue', 'md', 'tsx'], include: [/\.md$/, /\.vue$/, /\.tsx$/], dts: resolve(__dirname, './types/components.d.ts'), - resolvers: [ - ArcoResolver(), - IconsResolver(), - NaiveUiResolver(), - ElementPlusResolver(), - AntDesignVueResolver(), - VueUseComponentsResolver(), - ], + resolvers: normalizeResolvers({ + onlyExist: [ + [VantResolver(), 'vant'], + [QuasarResolver(), 'quasar'], + [DevUiResolver(), 'vue-devui'], + [NaiveUiResolver(), 'naive-ui'], + [Vuetify3Resolver(), 'vuetify'], + [PrimeVueResolver(), 'primevue'], + [ViewUiResolver(), 'view-design'], + [LayuiVueResolver(), 'layui-vue'], + [VarletUIResolver(), '@varlet/ui'], + [IduxResolver(), '@idux/components'], + [TDesignResolver(), 'tdesign-vue-next'], + [InklineResolver(), '@inkline/inkline'], + [ElementPlusResolver(), 'element-plus'], + [HeadlessUiResolver(), '@headlessui/vue'], + [ArcoResolver(), '@arco-design/web-vue'], + [AntDesignVueResolver(), 'ant-design-vue'], + [VueUseComponentsResolver(), '@vueuse/components'], + ], + include: [IconsResolver()], + }), }), // 目录下 api 按需自动引入辅助插件 env.VITE_APP_API_AUTO_IMPORT &&