diff --git a/lib/app/store.js b/lib/app/store.js index 127506e66c..592731c6ef 100644 --- a/lib/app/store.js +++ b/lib/app/store.js @@ -44,18 +44,29 @@ if (typeof storeData !== 'function') { //if file is user/index.js //it should save as user - if (name === 'index') + var isIndex = (name === 'index') + if (isIndex) namePath.pop() let module = getModuleNamespace(storeData, namePath) - name = namePath.pop() - - //use Object.assign to deal with cases where there's a 'myModule.js' and - //a 'myModule' folder containing state/getters/actions/mutations module[name] = module[name] || {} - module[name] = Object.assign(module[name], getModule(filename)) - module[name].namespaced = true + var fileModule = getModule(filename) + + if (!isIndex) { + module[name] = Object.assign({}, fileModule, module[name]) + module[name].namespaced = true + continue + } + + var appendedMods = [] + if (module[name].appends) { + fileModule.appends = module[name].appends + for (let append of module[name].appends) { + appendedMods[append] = module[name][append] + } + } + module[name] = Object.assign(module[name], fileModule, appendedMods) } } @@ -97,5 +108,7 @@ function getModuleNamespace (storeData, namePath, forAppend = false) { function appendModule(module, filename, name) { const file = files(filename) + module.appends = module.appends || [] + module.appends.push(name) module[name] = file.default || file }