// import _Vue from 'vue'
// let Vue = window.Vue
// if (!Vue) {
//   window.Vue = Vue = _Vue
// }
import Vue from 'vue'
// 集合所有的组件
let componentList = {}

// 扫描此文件夹下的所有的`.vue` 文件，并注册
const componentsWatcher = (scanner, _Vue) => {
  // 判断有没有被注册
  // 如果注册过，就直接返回，否则就再注册一遍
  if (componentsWatcher.installed) {
    return
  }
  let requireComponent = scanner
  // console.log(requireComponent.keys(), '注册的组件')
  requireComponent.keys().forEach(fileName => {
    // 拿到第i个
    const reqCom = requireComponent(fileName)
    // 使用vue里面的default.name 或 截取路径作为组件名
    const reqComName = (reqCom.default && reqCom.default.name) || fileName.split('/')[2]
    // console.log(reqComName, reqCom.default)
    if (reqComName) {
      // let componentObj = {
      //   name: reqComName,
      //   reqCom: reqCom.default || reqCom
      // }
      componentList[reqComName] = reqCom.default || reqCom
      if (_Vue) {
        // 组件挂载
        _Vue.component(reqComName, reqCom.default || reqCom)
        return
      }
      // 组件挂载
      Vue.component(reqComName, reqCom.default || reqCom)
    }
  })
}
// 扫描匹配条件
const vueScanner = require.context(
  './components',
  true,
  /\/index\.vue$/
)

// 扫描
componentsWatcher(vueScanner)
export const component = componentList
let install = function (_Vue) {
  componentsWatcher(vueScanner, _Vue)
}
export default {
  install
}
