vite.config.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import { defineConfig,loadEnv } from 'vite'
  2. import react from '@vitejs/plugin-react-swc'
  3. import monacoEditorPlugin from 'vite-plugin-monaco-editor';
  4. // https://vitejs.dev/config/
  5. export default defineConfig(({mode})=> {
  6. const env = loadEnv(mode, process.cwd(), '')
  7. // 如果你用的ts,请使用 let define: { [key: string]: string } = {};
  8. let define = {};
  9. Object.keys(env).forEach(key => {
  10. define[`import.meta.env.${key}`] = JSON.stringify(env[key])
  11. })
  12. return {
  13. base: './',
  14. plugins: [
  15. react(),
  16. {
  17. name: 'less',
  18. apply: 'build',
  19. loaders: ['less-loader']
  20. },
  21. monacoEditorPlugin({
  22. languageWorkers: ['editorWorkerService']
  23. })
  24. ],
  25. build: {
  26. outDir: 'dist', // 打包文件 默认dist
  27. minify: 'terser',
  28. chunkSizeWarningLimit: 2000, // 文件大小,默认500kb,生成的一个或多个文件的大小超过该值时,Vite 会发出警告提示
  29. // 打包清除console和debugger
  30. terserOptions: {
  31. compress: {
  32. drop_console: true,
  33. drop_debugger: true
  34. }
  35. },
  36. // rollupOptions: {
  37. // output: {
  38. // // 最小化拆分包
  39. // manualChunks(id) {
  40. // if (id.includes('node_modules')) {
  41. // return id.toString().split('node_modules/')[1].split('/')[0].toString()
  42. // }
  43. // },
  44. // // 用于从入口点创建的块的打包输出格式[name]表示文件名,[hash]表示该文件内容hash值
  45. // entryFileNames: 'js/[name].[hash].js',
  46. // // 用于命名代码拆分时创建的共享块的输出命名
  47. // // chunkFileNames: 'js/[name].[hash].js',
  48. // // 用于输出静态资源的命名,[ext]表示文件扩展名
  49. // assetFileNames: '[ext]/[name].[hash].[ext]',
  50. // // 拆分js到模块文件夹
  51. // chunkFileNames: (chunkInfo) => {
  52. // const facadeModuleId = chunkInfo.facadeModuleId ? chunkInfo.facadeModuleId.split('/') : [];
  53. // const fileName = facadeModuleId[facadeModuleId.length - 2] || '[name]';
  54. // return `js/${fileName}/[name].[hash].js`;
  55. // },
  56. // }
  57. // }
  58. },
  59. server: {
  60. host: '0.0.0.0',// 监听所有地址
  61. port: 5173, // 默认端口
  62. https: false, // 是否开启 https
  63. open: false, // 项目启动时是否打开浏览器
  64. cors: true, // 为开发服务器配置 CORS。默认启用并允许任何源,传递一个 选项对象 来调整行为或设为 false 表示禁用。
  65. base: '/', // 用于代理 Vite 作为子文件夹时使用。
  66. headers: {}, // 指定服务端响应的headers信息
  67. strictPort: false, // 设为 true 时若端口已被占用则会直接退出,而不是尝试下一个可用端口。
  68. proxy: {
  69. // 当有 /api开头的地址是,代理到target地址
  70. '^/api': {
  71. target: 'http://192.168.2.39:9080/', //目标源,目标服务器,真实请求地址
  72. changeOrigin: true, //支持跨域
  73. rewrite: (path) => path.replace(/^\/api/, "/api"), //重写真实路径,替换/api
  74. }
  75. },
  76. },
  77. }
  78. })