useSetting.ts 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import type { ProjectConfig, GlobConfig, SettingWrap, GlobEnvConfig } from '/@/types/config';
  2. import getProjectSetting from '/@/settings/projectSetting';
  3. import { getGlobEnvConfig, isDevMode } from '/@/utils/env';
  4. import { getShortName } from '../../../build/getShortName';
  5. import { warn } from '/@/utils/log';
  6. const reg = /[a-zA-Z\_]*/;
  7. const ENV_NAME = getShortName(import.meta.env);
  8. const ENV = ((isDevMode()
  9. ? getGlobEnvConfig()
  10. : window[ENV_NAME as any]) as unknown) as GlobEnvConfig;
  11. const {
  12. VITE_GLOB_APP_TITLE,
  13. VITE_GLOB_API_URL,
  14. VITE_GLOB_APP_SHORT_NAME,
  15. VITE_GLOB_API_URL_PREFIX,
  16. } = ENV;
  17. if (!reg.test(VITE_GLOB_APP_SHORT_NAME)) {
  18. warn(
  19. `VITE_GLOB_APP_SHORT_NAME Variables can only be characters/underscores, please modify in the environment variables and re-running.`
  20. );
  21. }
  22. export const useSetting = (): SettingWrap => {
  23. // Take global configuration
  24. const glob: Readonly<GlobConfig> = {
  25. title: VITE_GLOB_APP_TITLE,
  26. apiUrl: VITE_GLOB_API_URL,
  27. shortName: VITE_GLOB_APP_SHORT_NAME,
  28. urlPrefix: VITE_GLOB_API_URL_PREFIX,
  29. };
  30. const projectSetting: Readonly<ProjectConfig> = getProjectSetting;
  31. return {
  32. globSetting: glob as Readonly<GlobConfig>,
  33. projectSetting,
  34. };
  35. };