ShawnPhang c25bd8b3b0 init
2023-07-18 15:03:15 +08:00

31 lines
1.0 KiB
TypeScript

/*
* @Author: ShawnPhang
* @Date: 2021-07-13 22:51:29
* @Description: require.context自动引用
* @LastEditors: ShawnPhang
* @LastEditTime: 2022-04-08 10:28:47
*/
function capitalizeFirstLetter(string: string) {
return string.charAt(0).toUpperCase() + string.slice(1)
}
// 排除要全局引入的组件,可以是目录名也可以是文件名
const exclude = ['settings', 'layout']
const regex = RegExp('.*^(?!.*?(' + exclude.join('|') + ')).*\\.vue$')
// const requireComponent = require.context('.', true, /\.vue$/) // 找到components文件夹下以.vue命名的文件
const requireComponent = import.meta.globEager('./**/*.vue')
function guide(Vue: Type.Object) {
for (const fileName in requireComponent) {
if (regex.test(fileName)) {
const componentConfig = requireComponent[fileName]
const componentName = capitalizeFirstLetter(fileName.replace(/^\..*\//, '').replace(/\.\w+$/, ''))
Vue.component(componentName, componentConfig.default || componentConfig)
}
}
}
export default guide