80 lines
2.3 KiB
TypeScript
80 lines
2.3 KiB
TypeScript
import { defineConfig } from '@vben/vite-config';
|
||
import { resolve } from 'path';
|
||
|
||
// 自行取消注释来启用按需导入功能
|
||
// import { AntDesignVueResolver } from 'unplugin-vue-components/resolvers';
|
||
// import Components from 'unplugin-vue-components/vite';
|
||
|
||
export default defineConfig(async () => {
|
||
return {
|
||
application: {},
|
||
vite: {
|
||
define: {
|
||
// 注入项目根路径到运行时(ruoyi-admin目录层级)
|
||
__PROJECT_ROOT__: JSON.stringify((() => {
|
||
const cwd = process.cwd();
|
||
console.log('Vite当前工作目录:', cwd);
|
||
|
||
// 规范化路径分隔符,统一处理 Windows 和 macOS/Linux
|
||
const normalizedPath = cwd.replace(/\\/g, '/');
|
||
|
||
// 如果当前目录包含 /apps/web-antd,则向上两级到 ruoyi-admin
|
||
if (normalizedPath.includes('/apps/web-antd')) {
|
||
return resolve(cwd, '../..');
|
||
}
|
||
// 如果当前目录包含 /apps,则向上一级到 ruoyi-admin
|
||
else if (normalizedPath.includes('/apps')) {
|
||
return resolve(cwd, '..');
|
||
}
|
||
// 否则返回当前目录
|
||
else {
|
||
return cwd;
|
||
}
|
||
})()),
|
||
},
|
||
// 解决 jiti 构建问题
|
||
optimizeDeps: {
|
||
include: ['jiti'],
|
||
},
|
||
ssr: {
|
||
noExternal: ['jiti'],
|
||
},
|
||
build: {
|
||
commonjsOptions: {
|
||
transformMixedEsModules: true,
|
||
},
|
||
rollupOptions: {
|
||
external: [
|
||
/node_modules\/jiti\//,
|
||
],
|
||
},
|
||
target: 'es2022',
|
||
},
|
||
plugins: [
|
||
// Components({
|
||
// dirs: [], // 默认会导入src/components目录下所有组件 不需要
|
||
// dts: './types/components.d.ts', // 输出类型文件
|
||
// resolvers: [
|
||
// AntDesignVueResolver({
|
||
// // 需要排除Button组件 全局已经默认导入了
|
||
// exclude: ['Button'],
|
||
// importStyle: false, // css in js
|
||
// }),
|
||
// ],
|
||
// }),
|
||
],
|
||
server: {
|
||
proxy: {
|
||
'/api': {
|
||
changeOrigin: true,
|
||
rewrite: (path) => path.replace(/^\/api/, ''),
|
||
// mock代理目标地址
|
||
target: 'http://127.0.0.1:6039',
|
||
ws: true,
|
||
},
|
||
},
|
||
},
|
||
},
|
||
};
|
||
});
|