UNPKG

@tianyio/quality-helper

Version:

A comprehensive quality helper tool for project scaffolding and management

120 lines (111 loc) 3.46 kB
import vue from '@vitejs/plugin-vue' import { resolve } from 'path' import { defineConfig, loadEnv } from 'vite' import { analyzer } from 'vite-bundle-analyzer' import { versionInfoPlugin } from '@tianyio/quality-helper/version-plugin' const rootPath = resolve(__dirname, '../') // 基础配置 export default defineConfig(({ mode, command, isSsrBuild, isPreview }) => { const envDir = resolve(rootPath, './env') const envPrefix = 'FAST_' const env = loadEnv(mode, envDir, envPrefix) return { // 环境变量配置 envDir, envPrefix, // 插件配置 plugins: [vue(), versionInfoPlugin({}), analyzer()], resolve: { alias: { 'lib-name/export': resolve(rootPath, 'lib-export-path'), }, extensions: ['.ts', '.js', '.tsx', '.jsx', '.json'], // 优化模块解析顺序 mainFields: ['module', 'main', 'browser'], }, // 补充 Vite 自身的转译排除规则 esbuild: { exclude: /node_modules|templates/, // 阻止 esbuild 处理 node_modules 和 templates }, // 优化依赖预构建 optimizeDeps: { // 默认已排除 node_modules,如需额外排除可添加 // exclude: [] esbuildOptions: { // 禁用 esbuild 的 TypeScript 转译,让 Babel 处理 tsconfigRaw: {} as any, }, }, // 开发服务器配置 server: { host: '0.0.0.0', headers: { // 添加 CSP 头以允许 Web Worker 'Content-Security-Policy': "script-src 'self' 'unsafe-inline' 'unsafe-eval' blob:; worker-src 'self' blob:;", }, proxy: { '/api': { target: 'http://localhost:3000', changeOrigin: true, rewrite: (path: string) => path.replace(/^\/api/, ''), }, }, }, // 构建配置 build: { outDir: 'dist', // 当使用 legacy 插件时,让插件处理浏览器兼容性。legacy 插件会根据 .browserslistrc 自动处理现代和旧版浏览器 // target: 'esnext', // 纯 JS 库禁用 CSS 代码分割 // cssCodeSplit: false, // 优化构建报告 reportCompressedSize: true, chunkSizeWarningLimit: 100, sourcemap: false, minify: 'terser', terserOptions: { compress: { drop_debugger: true, // 移除未使用的代码 dead_code: true, // 优化条件表达式 conditionals: true, // 移除未使用的变量 unused: true, }, mangle: { // 保留类名和函数名,便于调试 keep_fnames: false, // 保留类名 keep_classnames: false, }, format: { // 保留注释 comments: false, }, }, rollupOptions: { output: { // 确保 ES 模块格式正确 format: 'es', exports: 'named', preserveModules: false, // 优化代码分割 // manualChunks: {}, }, treeshake: { moduleSideEffects: false, propertyReadSideEffects: false, tryCatchDeoptimization: false, // 使用推荐的 tree-shaking 预设 preset: 'recommended', // 自定义 tree-shaking 规则 unknownGlobalSideEffects: false, // 确保 依赖 的 Tree Shaking 正常工作 annotations: true, }, }, }, } })