86 lines
2.5 KiB
JavaScript
86 lines
2.5 KiB
JavaScript
import { defineConfig, loadEnv } from "vite";
|
||
import vue from "@vitejs/plugin-vue";
|
||
import path from "path";
|
||
import WindiCSS from "vite-plugin-windicss";
|
||
import { createSvgIconsPlugin } from "vite-plugin-svg-icons";
|
||
import { resolve } from "path";
|
||
import fs from "fs-extra";
|
||
|
||
export default defineConfig(({ command, mode }) => {
|
||
const { VITE_TCB_PATH,VITE_API_URL } = loadEnv(mode, process.cwd());
|
||
|
||
return {
|
||
base: `/${VITE_TCB_PATH}/`, //相对路径
|
||
server: {
|
||
host: "0.0.0.0",
|
||
port: "5173",
|
||
headers: {
|
||
// 防止点击劫持攻击
|
||
'X-Frame-Options': 'SAMEORIGIN', // 只允许同源页面嵌入
|
||
// 'X-Frame-Options': 'DENY', // 如果要完全禁止被嵌入,使用 DENY
|
||
// 额外的安全响应头
|
||
'X-Content-Type-Options': 'nosniff',
|
||
'X-XSS-Protection': '1; mode=block',
|
||
'Content-Security-Policy': "frame-ancestors 'self'", // CSP 的现代替代方案
|
||
},
|
||
proxy: {
|
||
// 将 VITE_PROXY_API_URL 的请求代理到 VITE_API_URL
|
||
'/API': {
|
||
target: VITE_API_URL,
|
||
changeOrigin: true,
|
||
rewrite: (path) => path.replace(/^\/API/, '') // 可选:重写路径
|
||
}
|
||
}
|
||
},
|
||
plugins: [
|
||
vue(),
|
||
WindiCSS(),
|
||
createSvgIconsPlugin({
|
||
// 指定需要缓存的图标文件夹
|
||
iconDirs: [path.resolve(process.cwd(), "src/assets/svg-icons")],
|
||
// 指定symbolId格式
|
||
symbolId: "icon-[dir]-[name]",
|
||
}),
|
||
],
|
||
optimizeDeps: {
|
||
exclude: ["lib-generate-test-usersig-es.min"],
|
||
},
|
||
build: {
|
||
outDir: `package/${VITE_TCB_PATH}`,
|
||
target: ["chrome52"],
|
||
cssTarget: ["chrome52"],
|
||
terserOptions: {
|
||
compress: {
|
||
drop_console: true, // 去除 console.log 等调试信息
|
||
},
|
||
},
|
||
cssCodeSplit: true, // 分割 CSS,避免全局 CSS 被打包成一个大文件
|
||
minify: "terser", // 使用 terser 进行压缩
|
||
brotliSize: true,
|
||
},
|
||
resolve: {
|
||
//文件系统路径的别名, 绝对路径
|
||
alias: {
|
||
"@": path.resolve(__dirname, "src"),
|
||
},
|
||
extensions: [".js", ".ts", ".vue", ".json"],
|
||
},
|
||
};
|
||
});
|
||
|
||
async function copyOldFiles(name) {
|
||
const srcDir = resolve(__dirname, name);
|
||
const destDir = resolve(__dirname, `oldFile`);
|
||
// 创建目标目录
|
||
if (!fs.existsSync(srcDir)) {
|
||
fs.mkdirSync(srcDir, { recursive: true });
|
||
}
|
||
if (!fs.existsSync(destDir)) {
|
||
fs.mkdirSync(destDir, { recursive: true });
|
||
}
|
||
try {
|
||
// 复制文件
|
||
await fs.copy(srcDir, destDir);
|
||
} catch (err) {}
|
||
}
|