index.js 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import Vue from "vue";
  2. import Vuex from "vuex";
  3. import getters from "./getters";
  4. Vue.use(Vuex);
  5. // https://webpack.js.org/guides/dependency-management/#requirecontext
  6. const modulesFiles = require.context("./modules", true, /\.js$/);
  7. // you do not need `import app from './modules/app'`
  8. // it will auto require all vuex module from modules file
  9. const modules = modulesFiles.keys().reduce((modules, modulePath) => {
  10. // set './app.js' => 'app'
  11. const moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, "$1");
  12. const value = modulesFiles(modulePath);
  13. modules[moduleName] = value.default;
  14. return modules;
  15. }, {});
  16. const state = () => ({
  17. domainConfig: {
  18. api: "",
  19. siteUrl: "",
  20. rooterUrl: "",
  21. jishuinUrl: ""
  22. }
  23. });
  24. const mutations = {
  25. updateDomainConfig(state, config) {
  26. state.domainConfig = {
  27. api: config.api,
  28. siteUrl: config.siteUrl,
  29. jishuinUrl: config.jishuinUrl,
  30. rooterUrl: config.rooterUrl
  31. };
  32. }
  33. };
  34. const store = new Vuex.Store({
  35. state,
  36. modules,
  37. getters,
  38. mutations
  39. });
  40. export default () => store;