Webpack中有一个函数

require.context(directory, useSubdirectories = false, regExp = /^\.\//)

参数:

  • directory:要搜索的文件夹目录
  • useSubdirectories:是否还应该搜索它的子目录
  • regExp:一个匹配文件的正则表达式

自动注册Vue组件(适用于高频组件)

//  global.js文件 Vue.use(global);

function changeStr(str) {
  return str.charAt(0).toUpperCase() + str.slice(1);
}

// 查找同级目录下以vue结尾的组件
const requireComponent = require.context("./", false, /\.vue$/);

// 对外暴露install方法
const install = (Vue) => {
  requireComponent.keys().forEach((fileName) => {
    let config = requireComponent(fileName);

    console.log(config); // ./child1.vue 然后用正则拿到child1
    let componentName = changeStr(
      fileName.replace(/^\.\//, "").replace(/\.\w+$/, "")
    );
    Vue.component(componentName, config.default || config);
  });
};

export default {
  // 对外暴露install方法
  install,
};

main.js 中注册

Vue.use(global);