vite.config.ts 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  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. jianpuTest: resolve(__dirname, "jianpu-test.html"), // 简谱引擎测试页面
  59. },
  60. output: {
  61. // 最小化拆分包
  62. manualChunks(id) {
  63. if (id.includes("osmd-extended")) {
  64. // 通过拆分包的方式将所有来自osmd-extended的模块打包到单独的chunk中
  65. return id
  66. .toString()
  67. .split("osmd-extended/")[1]
  68. .split("/")[0]
  69. .toString();
  70. }
  71. },
  72. chunkFileNames: "js/[name]-[hash].js", // 引入文件名的名称
  73. entryFileNames: "js/[name]-[hash].js", // 包的入口文件名称
  74. assetFileNames: "[ext]/[name]-[hash].[ext]", // 资源文件像 字体,图片等
  75. },
  76. },
  77. },
  78. server: {
  79. cors: true,
  80. port: 3001,
  81. // https: true,
  82. proxy: {
  83. "^/instrument/.*": {
  84. // target: "https://kt.colexiu.com",
  85. // target: "https://test.lexiaoya.cn",
  86. // target: "https://kt.colexiu.com",
  87. target: "https://test.resource.colexiu.com", // 内容平台开发环境,内容平台开发,需在url链接上加上isCbs=true
  88. // target: "https://test.kt.colexiu.com",
  89. // target: "https://mec.colexiu.com",
  90. changeOrigin: true,
  91. rewrite: (path) => path.replace(/^\/instrument/, ""),
  92. },
  93. },
  94. },
  95. preview: {
  96. port: 3000,
  97. host: "192.168.3.114",
  98. },
  99. });
  100. // vite.config.js