import Vue from 'vue'
import upperFirst from 'lodash/upperFirst' // could be vue.filter
import camelCase from 'lodash/camelCase' // could be vue.filter
// Require in a **base** component context
// nb: you can use any prefix you want instead of 'base' below
const requireComponent = require.context('.', false, /base-[\w-]+\vue$/)
requireComponent.keys().forEach(filename => {
// get component config
const componentConfig = requireComponent(filename)
// get PascalCase name of component
const componentName = upperFirst(
camelcase(
filename
.replace(/^\.\//,'')
.replace(\/.\w+$/,'')
)
)
// Register component globally
// nb: componentConfig.default: webpack/es6, componentConfig: es5
Vue.component(componentName, componentConfig.default || componentConfig)
})
source: 7 Secret Patterns Vue Consultants Don’t Want You to Know