vue-storefront
Version:
A Vue.js, PWA eCommerce frontend
67 lines (53 loc) • 1.76 kB
JavaScript
import Vue from 'vue'
import App from 'theme/app'
import store from 'core/store'
import router from 'core/router'
import config from 'config'
import appExtend from 'theme/app-extend'
import { sync } from 'vuex-router-sync'
import { registerTheme, plugins, mixins, filters } from 'core/lib/themes'
import { registerExtensions } from 'core/lib/extensions'
import VueLazyload from 'vue-lazyload'
import Vuelidate from 'vuelidate'
import i18n from 'core/lib/i18n'
Vue.use(Vuelidate)
Vue.use(VueLazyload, {
attempt: 2
})
const pluginsObject = plugins()
Object.keys(pluginsObject).forEach(function (key) {
Vue.use(pluginsObject[key])
})
const mixinsObject = mixins()
Object.keys(mixinsObject).forEach(function (key) {
Vue.mixin(mixinsObject[key])
})
const filtersObject = filters()
Object.keys(filtersObject).forEach(key => {
Vue.filter(key, filtersObject[key])
})
appExtend(Vue)
export function createApp () {
sync(store, router)
const app = new Vue({
router,
store,
i18n,
render: h => h(App)
})
registerExtensions(config.registeredExtensions || [], app, router, store, config) // TODO: use config or ENV variables
registerTheme(config.theme, app, router, store)
app.$emit('application-after-init', app)
if (config.demomode === true) {
global.__DEMO_MODE__ = true
} else {
global.__DEMO_MODE__ = false
}
global.__VERSION__ = '0.2.0'
global.__CONFIG__ = config
global.__TAX_COUNTRY__ = config.tax.defaultCountry || 'PL'
global.__TAX_REGION__ = config.tax.defaultRegion || ''
global.__I18N_COUNTRY__ = config.i18n.defaultCountry || 'US'
global.__I18N_LANG__ = config.i18n.defaultLanguage || 'EN'
return { app, router, store }
}