awesome-cheatsheets/plugins/global.js

46 lines
1.4 KiB
JavaScript

/**************************************************************************
* IMPORTS
***************************************************************************/
// NPM
import Vue from "vue";
import upperFirst from "lodash/upperFirst";
import camelCase from "lodash/camelCase";
/**************************************************************************
* GLOBAL COMPONENTS
* https://vuejs.org/v2/guide/components.html#Global-Registration
***************************************************************************/
const requireComponent = require.context(
// The relative path of the components folder
// NOTE: try with ../components/base
"../components",
// Whether or not to look in subfolders
false,
// The regular expression used to match base component filenames
/Base[A-Z]\w+\.(vue|js)$/
);
requireComponent.keys().forEach(fileName => {
// Get component config
const componentConfig = requireComponent(fileName);
// Get PascalCase name of component
const componentName = upperFirst(
camelCase(
// Strip the leading `./` and extension from the filename
fileName.replace(/^\.\/(.*)\.\w+$/, "$1")
)
);
// Register component globally
Vue.component(
componentName,
// Look for the component options on `.default`, which will
// exist if the component was exported with `export default`,
// otherwise fall back to module's root.
componentConfig.default || componentConfig
);
});