vite.config.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import { defineConfig } from 'vite'
  2. import * as path from 'path'
  3. import * as dotenv from 'dotenv'
  4. import * as fs from 'fs'
  5. import vue from '@vitejs/plugin-vue'
  6. const NODE_ENV = process.env.NODE_ENV || 'development'
  7. const envFile = `.env.${NODE_ENV}`
  8. const envConfig = dotenv.parse(fs.readFileSync(envFile))
  9. for (const k in envConfig) {
  10. process.env[k] = envConfig[k]
  11. }
  12. let alias = {
  13. '@': path.resolve(__dirname, './src'),
  14. 'vue$': 'vue/dist/vue.runtime.esm-bundler.js',
  15. }
  16. const conf = {
  17. base: './', // index.html文件所在位置
  18. root: './', // js导入的资源路径,src
  19. server: {
  20. open: true,
  21. port: process.env.VITE_DEV_PORT,
  22. proxy: {
  23. [process.env.VITE_SERVER_API]: {
  24. target: process.env.VITE_SERVER_PATH,
  25. // rewrite: path => path.replace(/^\/api/, '/api'), //为了模拟
  26. changeOrigin: true,
  27. },
  28. },
  29. },
  30. build: {
  31. target: 'es2015',
  32. minify: 'terser', // 是否进行压缩,boolean | 'terser' | 'esbuild',默认使用 esbuild
  33. manifest: false, // 是否产出maifest.json
  34. sourcemap: false, // 是否产出soucemap.json
  35. emptyOutDir: true,
  36. outDir: 'dist', // 产出目录
  37. rollupOptions: {
  38. output: {
  39. manualChunks (id) {
  40. if (id.includes('node_modules')) {
  41. const arr = id.toString().split('node_modules/')[1].split('/')
  42. switch (arr[0]) {
  43. case '@popperjs':
  44. case '@vue':
  45. case 'axios':
  46. case 'element-plus':
  47. case '@element-plus':
  48. return '_' + arr[0]
  49. default :
  50. return '__vendor'
  51. }
  52. }else if(id.includes('Gwen-admin/src')){
  53. //src 下的都打包到一起 不然很多小文件
  54. return 'gwen'
  55. }
  56. },
  57. chunkFileNames: 'static/chunk/[name]-[hash].js',
  58. entryFileNames: 'static/entry/[name]-[hash].js',
  59. assetFileNames: 'static/[ext]/[name]-[hash].[ext]'
  60. },
  61. },
  62. },
  63. css: {
  64. preprocessorOptions: {
  65. scss: {
  66. javascriptEnabled: true,
  67. },
  68. },
  69. },
  70. resolve: {
  71. alias,
  72. },
  73. plugins: [
  74. vue(),
  75. ],
  76. }
  77. // https://vitejs.dev/config/
  78. export default defineConfig(conf)