import { createApp } from 'vue'
import App from './App.vue'
import upperFirst from 'lodash/upperFirst'
import camelCase from 'lodash/camelCase'
const requireComponent = require.context(
'./components',
false,
/Base[A-Z]\w+\.(vue|js)$/
)
const app = createApp(App)
requireComponent.keys().forEach(fileName => {
const componentConfig = requireComponent(fileName)
const componentName = upperFirst(
camelCase(fileName.replace(/^\.\/(.*)\.\w+$/, '$1'))
)
app.component(componentName, componentConfig.default || componentConfig)
})
app.mount('#app')
可以在 webpack 中使用 require.context()
来创建自己的上下文(参考)。可以对某个文件夹进行搜寻。
语法:
require.context(
directory,
(useSubdirectories = true),
(regExp = /^\.\/.*$/),
(mode = 'sync')
);
// 例1
require.context('./test', false, /\.test\.js$/);
// a context with files from the test directory that can be required with a request ending with `.test.js`.
// 例2
require.context('../', true, /\.stories\.js$/);
// a context with all files in the parent folder and descending folders ending with `.stories.js`.
使用 fileName.replace(/^\.\/(.*)\.\w+$/, '$1')
,将文件名进行替换。从 ./base-input.vue
到 baseInput
,再到 BaseInput
。使用 lodash 方法进行转换。