Skip to content

Commit

Permalink
feat: 更多的 ui 自动引入(仅安装才会生效)
Browse files Browse the repository at this point in the history
  • Loading branch information
markthree committed May 18, 2022
1 parent bdb6a53 commit b452eb2
Show file tree
Hide file tree
Showing 5 changed files with 78 additions and 16 deletions.
22 changes: 17 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand All @@ -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",
Expand Down
2 changes: 2 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

22 changes: 22 additions & 0 deletions presets/shared/resolvers.ts
Original file line number Diff line number Diff line change
@@ -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> = T | Array<T>
type Resolvers = Arrayable<Arrayable<Resolver>>
Expand All @@ -17,3 +19,23 @@ if (env.VITE_APP_DIR_API_AUTO_IMPORT) {
})
)
}

interface Options {
onlyExist?: [Arrayable<ComponentResolver>, 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
}
46 changes: 36 additions & 10 deletions presets/tov.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 [
Expand Down Expand Up @@ -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 &&
Expand Down

0 comments on commit b452eb2

Please sign in to comment.