preinstall.ts 768 B

123456789101112131415161718192021222324252627282930313233
  1. import type { ApplicationConfig } from '@vben/types/global';
  2. import { useAppConfig } from '@vben/hooks';
  3. const parse = (value: unknown) => {
  4. try {
  5. return JSON.parse(value as string);
  6. } catch {
  7. return value;
  8. }
  9. };
  10. function load(tag = 'VITE_GLOB_'): Readonly<ApplicationConfig> {
  11. const appConfig: ApplicationConfig = useAppConfig(
  12. import.meta.env,
  13. import.meta.env.PROD,
  14. );
  15. const config = import.meta.env.PROD
  16. ? window._VBEN_ADMIN_PRO_APP_CONF_
  17. : import.meta.env;
  18. for (const [key, value] of Object.entries(config)) {
  19. if (!key.includes(tag)) continue;
  20. const k = key.slice(tag.length).toLowerCase();
  21. (appConfig as any)[k] = parse(value);
  22. }
  23. return Object.freeze(appConfig);
  24. }
  25. export const globalVariate = load();