plugins_autoComponent.ts 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. /**
  2. * @name AutoRegistryComponents
  3. * @description 按需加载,自动引入组件
  4. */
  5. import type { RsbuildPlugin } from '@rsbuild/core'
  6. import IconsResolver from 'unplugin-icons/resolver'
  7. import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
  8. import Components from 'unplugin-vue-components/rspack'
  9. const plugin = () =>
  10. Components({
  11. dts: 'types/components.d.ts',
  12. types: [
  13. {
  14. from: 'vue-router',
  15. names: ['RouterLink', 'RouterView'],
  16. },
  17. ],
  18. resolvers: [ElementPlusResolver(), IconsResolver({ prefix: 'Icon' })],
  19. globs: [
  20. 'src/components/common/*/*.{vue,tsx}',
  21. 'src/components/business/*/*.{vue,tsx}',
  22. ],
  23. // 确保扫描 .vue 和 .tsx 文件
  24. extensions: ['vue', 'tsx'],
  25. deep: false,
  26. directoryAsNamespace: false,
  27. globalNamespaces: [],
  28. directives: true,
  29. })
  30. export default (): RsbuildPlugin => ({
  31. name: 'rsbuild:unplugin-vue-components',
  32. setup(api) {
  33. api.modifyRspackConfig((config) => {
  34. config.plugins.push(plugin())
  35. })
  36. },
  37. })