import { App } from 'vue' import { FIRST_NAME } from '@/constants' import upperFirst from 'lodash/upperFirst' import camelCase from 'lodash/camelCase' /* 注册全局组件 */ /* 使用 */ export default { install(app: App) { // 导入符合规则的文件 const requireComponent = require.context('../../base-ui', true, /\.vue$/) // 逻辑处理 requireComponent.keys().forEach((fullPath) => { // 获取组件文件夹名 let componentName = fullPath.replace('./', '').replace('/index.vue', '') if (componentName === 'icons') { // icons单独处理 componentName = 'icon' } // 获取组件的 PascalCase 名 componentName = FIRST_NAME + upperFirst(camelCase(componentName)) // 获取组件配置 const componentConfig = requireComponent(fullPath) // 全局组件注册 app.component( componentName, // 在 `.default` 上查找组件选项。 // 如果组件导出了 `export default` 的话,该选项会存在。 // 否则回退到模块的根。 componentConfig.default || componentConfig ) }) } }