vite.config.ts 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. import { defineConfig } from "vite";
  2. import vue from "@vitejs/plugin-vue";
  3. import vueJsx from "@vitejs/plugin-vue-jsx";
  4. import legacy from "@vitejs/plugin-legacy";
  5. import { resolve } from "path";
  6. import postCssPxToRem from "postcss-pxtorem";
  7. import { visualizer } from "rollup-plugin-visualizer";
  8. import viteCompression from "vite-plugin-compression";
  9. // https://vitejs.dev/config/
  10. export default defineConfig({
  11. base: "./",
  12. resolve: {},
  13. // assetsInclude: ['**/*.html'],
  14. plugins: [
  15. // mkcert(), // 本地https
  16. // viteCompression({
  17. // algorithm: "gzip", // 指定压缩算法为gzip,[ 'gzip' , 'brotliCompress' ,'deflate' , 'deflateRaw']
  18. // ext: ".gz", // 指定压缩后的文件扩展名为.gz
  19. // threshold: 10240, // 仅对文件大小大于threshold的文件进行压缩,默认为10KB
  20. // deleteOriginFile: false, // 是否删除原始文件,默认为false
  21. // filter: /\.(js|css|json|html|ico|svg)(\?.*)?$/i, // 匹配要压缩的文件的正则表达式,默认为匹配.js、.css、.json、.html、.ico和.svg文件
  22. // compressionOptions: { level: 9 }, // 指定gzip压缩级别,默认为9(最高级别)
  23. // verbose: true, //是否在控制台输出压缩结果
  24. // disable: false, //是否禁用插件
  25. // }),
  26. legacy({
  27. targets: ["Chrome 63"],
  28. additionalLegacyPolyfills: ["regenerator-runtime/runtime"],
  29. modernPolyfills: true,
  30. }),
  31. vue(),
  32. vueJsx(),
  33. visualizer({ open: true }), // 自动开启分析页面
  34. ],
  35. css: {
  36. postcss: {
  37. plugins: [
  38. postCssPxToRem({
  39. rootValue: 37.5,
  40. propList: ["*"],
  41. selectorBlackList: [".norem"],
  42. }),
  43. ],
  44. },
  45. },
  46. build: {
  47. minify: 'terser', // 启用 terser 压缩
  48. terserOptions: {
  49. compress: {
  50. // pure_funcs: ['console.log'], // 只删除 console.log
  51. //drop_console: true, // 删除所有 console
  52. drop_debugger: true, // 删除 debugger
  53. }
  54. },
  55. rollupOptions: {
  56. input: {
  57. instrument: resolve(__dirname, "instrument.html"),
  58. },
  59. output: {
  60. // 最小化拆分包
  61. manualChunks(id) {
  62. if (id.includes("osmd-extended")) {
  63. // 通过拆分包的方式将所有来自osmd-extended的模块打包到单独的chunk中
  64. return id
  65. .toString()
  66. .split("osmd-extended/")[1]
  67. .split("/")[0]
  68. .toString();
  69. }
  70. },
  71. chunkFileNames: "js/[name]-[hash].js", // 引入文件名的名称
  72. entryFileNames: "js/[name]-[hash].js", // 包的入口文件名称
  73. assetFileNames: "[ext]/[name]-[hash].[ext]", // 资源文件像 字体,图片等
  74. },
  75. },
  76. },
  77. server: {
  78. cors: true,
  79. port: 3000,
  80. // https: true,
  81. proxy: {
  82. "^/instrument/.*": {
  83. // target: "https://kt.colexiu.com",
  84. // target: "https://test.lexiaoya.cn",
  85. // target: "https://kt.colexiu.com",
  86. // target: "https://test.resource.colexiu.com", // 内容平台开发环境,内容平台开发,需在url链接上加上isCbs=true
  87. target: "https://test.kt.colexiu.com",
  88. // target: "https://mec.colexiu.com",
  89. changeOrigin: true,
  90. rewrite: (path) => path.replace(/^\/instrument/, ""),
  91. },
  92. },
  93. },
  94. preview: {
  95. port: 3000,
  96. host: "192.168.3.114",
  97. },
  98. });
  99. // vite.config.js