Files
JoyD/AutoRobot/Windows/Robot/Web/vite.config.js

88 lines
2.6 KiB
JavaScript
Raw Permalink Normal View History

import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
// 定义一个简单的插件来解决阿里云SDK加载问题
const fixAliyunSDKPlugin = {
name: 'fix-aliyun-sdk',
enforce: 'pre',
transform(code, id) {
// 在构建时移除对阿里云安全SDK的引用
// 这个正则会匹配可能的阿里云SDK引入代码
if (code.includes('ice-plugin-spm') || code.includes('APlus') || code.includes('securitySDK')) {
return code
.replace(/import\s+.*ice-plugin-spm.*;/g, '')
.replace(/import\s+.*APlus.*;/g, '')
.replace(/import\s+.*securitySDK.*;/g, '')
.replace(/\s*script\s*src\s*=\s*["']https:\/\/o\.alicdn\.com\/tbpc\/securitySDK\/securitySDK\.umd\.js["']\s*>/g, '')
}
return null;
}
};
export default defineConfig(({ mode }) => {
const isDebug = mode === 'debug'
const isRelease = mode === 'release'
return {
// 配置Vue插件以支持更好的调试体验
plugins: [
vue({
template: {
compilerOptions: {
// 启用调试提示
whitespace: 'preserve'
}
}
}),
fixAliyunSDKPlugin // 添加我们的修复插件
],
server: {
port: 8081, // 改为不同于后端的端口
proxy: {
// 添加代理配置将WebSocket请求转发到后端
'/': {
target: 'http://localhost:8805',
ws: true,
changeOrigin: true,
// 配置代理超时时间,避免过早断开连接
timeout: 60000,
// 配置重写规则
rewrite: (path) => path
}
}
},
// 根据模式配置构建选项
build: {
// 调试模式下启用sourcemap发布模式下禁用
sourcemap: isDebug,
// 调试模式下禁用压缩,发布模式下启用
minify: isRelease,
// 根据模式设置不同的输出目录
outDir: 'dist',
// 配置外部依赖,避免打包不必要的库
rollupOptions: {
external: ['https://o.alicdn.com/tbpc/securitySDK/securitySDK.umd.js']
}
},
// 配置CSS预处理器选项
css: {
preprocessorOptions: {
css: {
// 禁用@import内联可能有助于解决一些导入问题
url: false
},
// 配置Sass使用现代API避免旧版JS API警告
scss: {
api: 'modern-compiler'
},
sass: {
api: 'modern-compiler'
}
}
},
// 配置开发服务器的CSP头信息
headers: {
'Content-Security-Policy': "script-src 'self' 'unsafe-inline' 'unsafe-eval'"
}
}
})