index.ts 946 B

123456789101112131415161718192021222324252627
  1. import { InjectionKey } from 'vue';
  2. import { createStore, useStore as baseUseStore, Store } from 'vuex';
  3. import { RootStateTypes } from '/@/store/interface/index';
  4. // Vite supports importing multiple modules from the file system using the special import.meta.glob function
  5. // see https://cn.vitejs.dev/guide/features.html#glob-import
  6. const modulesFiles = import.meta.globEager('./modules/*.ts');
  7. const pathList: string[] = [];
  8. for (const path in modulesFiles) {
  9. pathList.push(path);
  10. }
  11. const modules = pathList.reduce((modules: { [x: string]: any }, modulePath: string) => {
  12. const moduleName = modulePath.replace(/^\.\/modules\/(.*)\.\w+$/, '$1');
  13. const value = modulesFiles[modulePath];
  14. modules[moduleName] = value.default;
  15. return modules;
  16. }, {});
  17. export const key: InjectionKey<Store<RootStateTypes>> = Symbol();
  18. export const store = createStore<RootStateTypes>({ modules });
  19. export function useStore() {
  20. return baseUseStore(key);
  21. }