vite.config.ts 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  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://test.gym.lexiaoya.cn",
  84. changeOrigin: true,
  85. rewrite: (path) => path.replace(/^\/instrument/, ""),
  86. },
  87. },
  88. },
  89. preview: {
  90. port: 3000,
  91. host: "192.168.3.114",
  92. },
  93. });
  94. // vite.config.js