字段配置类型名修改
笑笑 编写于 2023-04-26 22:42:15
NewLife.CubeVue
import camelCase from 'lodash/camelCase';
import upperFirst from 'lodash/upperFirst';

/**
 * 组件自动化全局注册
 * @param app
 * @param fileContext const fileContext = require.context('@/views/components', true, /\w+\.(vue|js)$/)
 */
export const requireComponent = (app: any, fileContext: any) => {
  // fileContext.keys().forEach((fileName: string) => {
  //   // 获取组件配置
  //   const componentConfig = fileContext(fileName)
  Object.entries(fileContext).forEach(([fileName, val]) => {
    const componentConfig = val as any;

    // 如果name不存在则使用文件名
    // 获取组件的 PascalCase 名,
    const componentName =
      (componentConfig.default || componentConfig).name ||
      upperFirst(
        camelCase(
          // 获取目录深度无关的文件名
          fileName
            .split('/')
            .pop()
            ?.replace(/\.\w+$/, ''),
        ),
      );

    app.component(
      componentName,
      // 在 `.default` 上查找组件选项。
      // 如果组件导出了 `export default` 的话,该选项会存在。
      // 否则回退到模块的根。
      componentConfig.default || componentConfig,
    );
  });
};