Files

230 lines
7.7 KiB
TypeScript

import { defineConfig } from '@vben/vite-config';
import { readFileSync } from 'node:fs';
import { fileURLToPath, URL } from 'node:url';
import ElementPlus from 'unplugin-element-plus/vite';
import { loadEnv } from 'vite';
const resolveLocal = (path: string) =>
fileURLToPath(new URL(path, import.meta.url));
const appDir = fileURLToPath(new URL('.', import.meta.url));
const appVersion =
JSON.parse(readFileSync(resolveLocal('./package.json'), 'utf-8')).version ||
'0.0.0';
const exactAlias = (find: string, path: string) => ({
find: new RegExp(`^${find.replaceAll('/', '\\/')}$`),
replacement: resolveLocal(path),
});
export default defineConfig(async (config) => {
const env = loadEnv(config.mode, appDir);
const proxyTarget = env.VITE_PROXY_TARGET || 'http://localhost:8000';
return {
application: {
archiver: false,
injectMetadata: false,
license: false,
pwa: false,
vxeTableLazyImport: false,
},
vite: {
define: {
'import.meta.env.VITE_APP_VERSION': JSON.stringify(appVersion),
},
resolve: {
alias: [
exactAlias(
'@vben-core/design',
'../../packages/@core/base/design/src/index.ts',
),
exactAlias(
'@vben-core/design/bem',
'../../packages/@core/base/design/src/scss-bem/bem.scss',
),
exactAlias(
'@vben-core/composables',
'../../packages/@core/composables/src/index.ts',
),
exactAlias(
'@vben-core/form-ui',
'../../packages/@core/ui-kit/form-ui/src/index.ts',
),
exactAlias(
'@vben-core/icons',
'../../packages/@core/base/icons/src/index.ts',
),
exactAlias(
'@vben-core/layout-ui',
'../../packages/@core/ui-kit/layout-ui/src/index.ts',
),
exactAlias(
'@vben-core/menu-ui',
'../../packages/@core/ui-kit/menu-ui/src/index.ts',
),
exactAlias(
'@vben-core/popup-ui',
'../../packages/@core/ui-kit/popup-ui/src/index.ts',
),
exactAlias(
'@vben-core/preferences',
'../../packages/@core/preferences/src/index.ts',
),
exactAlias(
'@vben-core/shadcn-ui',
'../../packages/@core/ui-kit/shadcn-ui/src/index.ts',
),
exactAlias(
'@vben-core/shared/cache',
'../../packages/@core/base/shared/src/cache/index.ts',
),
exactAlias(
'@vben-core/shared/color',
'../../packages/@core/base/shared/src/color/index.ts',
),
exactAlias(
'@vben-core/shared/constants',
'../../packages/@core/base/shared/src/constants/index.ts',
),
exactAlias(
'@vben-core/shared/global-state',
'../../packages/@core/base/shared/src/global-state.ts',
),
exactAlias(
'@vben-core/shared/store',
'../../packages/@core/base/shared/src/store.ts',
),
exactAlias(
'@vben-core/shared/utils',
'../../packages/@core/base/shared/src/utils/index.ts',
),
exactAlias(
'@vben-core/tabs-ui',
'../../packages/@core/ui-kit/tabs-ui/src/index.ts',
),
exactAlias(
'@vben-core/typings',
'../../packages/@core/base/typings/src/index.ts',
),
exactAlias(
'@vben/access',
'../../packages/effects/access/src/index.ts',
),
exactAlias(
'@vben/common-ui',
'../../packages/effects/common-ui/src/index.ts',
),
exactAlias(
'@vben/common-ui/es/tippy',
'../../packages/effects/common-ui/src/components/tippy/index.ts',
),
exactAlias(
'@vben/common-ui/es/api-component',
'../../packages/effects/common-ui/src/components/api-component/index.ts',
),
exactAlias(
'@vben/common-ui/es/page',
'../../packages/effects/common-ui/src/components/page/index.ts',
),
exactAlias(
'@vben/common-ui/es/fallback',
'../../packages/effects/common-ui/src/ui/fallback/index.ts',
),
exactAlias(
'@vben/common-ui/es/authentication/code-login',
'../../packages/effects/common-ui/src/ui/authentication/code-login.vue',
),
exactAlias(
'@vben/common-ui/es/authentication/forget-password',
'../../packages/effects/common-ui/src/ui/authentication/forget-password.vue',
),
exactAlias(
'@vben/common-ui/es/authentication/login',
'../../packages/effects/common-ui/src/ui/authentication/login.vue',
),
exactAlias(
'@vben/common-ui/es/login-expired-modal',
'../../packages/effects/common-ui/src/ui/authentication/login-expired-modal.vue',
),
exactAlias(
'@vben/common-ui/es/authentication/qrcode-login',
'../../packages/effects/common-ui/src/ui/authentication/qrcode-login.vue',
),
exactAlias(
'@vben/common-ui/es/authentication/register',
'../../packages/effects/common-ui/src/ui/authentication/register.vue',
),
exactAlias(
'@vben/common-ui/es/captcha/slider-captcha',
'../../packages/effects/common-ui/src/components/captcha/slider-captcha/index.vue',
),
exactAlias(
'@vben/constants',
'../../packages/constants/src/index.ts',
),
exactAlias(
'@vben/hooks',
'../../packages/effects/hooks/src/index.ts',
),
exactAlias('@vben/icons', '../../packages/icons/src/index.ts'),
exactAlias(
'@vben/layouts',
'../../packages/effects/layouts/src/index.ts',
),
exactAlias(
'@vben/layouts/preferences-blocks',
'../../packages/effects/layouts/src/widgets/preferences/blocks/index.ts',
),
exactAlias(
'@vben/layouts/es/lock-screen',
'../../packages/effects/layouts/src/widgets/lock-screen/index.ts',
),
exactAlias(
'@vben/layouts/es/user-dropdown',
'../../packages/effects/layouts/src/widgets/user-dropdown/index.ts',
),
exactAlias('@vben/locales', '../../packages/locales/src/index.ts'),
exactAlias(
'@vben/preferences',
'../../packages/preferences/src/index.ts',
),
exactAlias(
'@vben/request',
'../../packages/effects/request/src/index.ts',
),
exactAlias('@vben/stores', '../../packages/stores/src/index.ts'),
exactAlias('@vben/styles', '../../packages/styles/src/index.ts'),
exactAlias(
'@vben/styles/ele',
'../../packages/styles/src/ele/index.css',
),
exactAlias('@vben/types', '../../packages/types/src/index.ts'),
exactAlias('@vben/utils', '../../packages/utils/src/index.ts'),
],
},
plugins: [
ElementPlus({
format: 'esm',
}),
],
server: {
proxy: {
'/basic-api': {
changeOrigin: true,
rewrite: (path) => path.replace(/^\/basic-api/, ''),
target: proxyTarget,
ws: true,
},
'/ws': {
changeOrigin: true,
target: proxyTarget,
ws: true,
},
},
},
},
};
});