vite.config.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import { defineConfig,loadEnv } from 'vite';
  2. import react from '@vitejs/plugin-react-swc';
  3. import monacoEditorPlugin from 'vite-plugin-monaco-editor';
  4. import viteCompression from 'vite-plugin-compression';
  5. import { visualizer } from 'rollup-plugin-visualizer';
  6. export default defineConfig(({mode})=> {
  7. const env = loadEnv(mode, process.cwd(), '');
  8. // 如果你用的ts,请使用 let define: { [key: string]: string } = {};
  9. let define = {};
  10. Object.keys(env).forEach(key => {
  11. define[`import.meta.env.${key}`] = JSON.stringify(env[key])
  12. })
  13. return {
  14. base: './',
  15. plugins: [
  16. react(),
  17. {
  18. name: 'less',
  19. apply: 'build',
  20. loaders: ['less-loader']
  21. },
  22. monacoEditorPlugin({
  23. languageWorkers: ['editorWorkerService']
  24. }),
  25. visualizer({
  26. open:true, // 注意这里要设置为true,否则无效,如果存在本地服务端口,将在打包后自动展示
  27. gzipSize:true,
  28. file: "stats.html", //分析图生成的文件名
  29. brotliSize:true
  30. }),
  31. viteCompression({
  32. filter: /\.(js|css|json|txt|ico|svg)(\?.*)?$/i,
  33. verbose: true, // 是否在控制台中输出压缩结果
  34. disable: false,
  35. threshold: 1024, // 如果体积大于500kb,将被压缩,单位为b,体积过小时请不要压缩,以免适得其反
  36. algorithm: 'gzip', // 压缩算法,可选['gzip',' brotliccompress ','deflate ','deflateRaw']
  37. ext: '.gz',
  38. deleteOriginFile: false // 源文件压缩后是否删除
  39. })
  40. ],
  41. build: {
  42. outDir: 'dist', // 打包文件 默认dist
  43. minify: 'terser',
  44. chunkSizeWarningLimit: 2000, // 文件大小,默认500kb,生成的一个或多个文件的大小超过该值时,Vite 会发出警告提示
  45. // 打包清除console和debugger
  46. terserOptions: {
  47. compress: {
  48. drop_console: true,
  49. drop_debugger: true
  50. }
  51. },
  52. },
  53. server: {
  54. host: '0.0.0.0',// 监听所有地址
  55. port: 5173, // 默认端口
  56. https: false, // 是否开启 https
  57. open: false, // 项目启动时是否打开浏览器
  58. cors: true, // 为开发服务器配置 CORS。默认启用并允许任何源,传递一个 选项对象 来调整行为或设为 false 表示禁用。
  59. base: '/', // 用于代理 Vite 作为子文件夹时使用。
  60. headers: {}, // 指定服务端响应的headers信息
  61. strictPort: false, // 设为 true 时若端口已被占用则会直接退出,而不是尝试下一个可用端口。
  62. proxy: {
  63. // 当有 /api开头的地址是,代理到target地址
  64. '^/api': {
  65. target: 'http://172.20.2.23:18084/', //目标源,目标服务器,真实请求地址
  66. //target: 'http://192.168.2.211:9080/', //目标源,目标服务器,真实请求地址
  67. changeOrigin: true, //支持跨域
  68. rewrite: (path) => path.replace(/^\/api/, "/api"), //重写真实路径,替换/api
  69. }
  70. },
  71. },
  72. }
  73. })