vite.config.ts 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import { defineConfig } from 'vite'
  2. import vue from '@vitejs/plugin-vue'
  3. import { resolve } from 'path'
  4. import { OUTPUT_DIR, brotliSize, chunkSizeWarningLimit, terserOptions, rollupOptions } from './build/constant'
  5. import viteCompression from 'vite-plugin-compression'
  6. import { viteMockServe} from "vite-plugin-mock";
  7. function pathResolve(dir: string) {
  8. return resolve(process.cwd(), '.', dir)
  9. }
  10. export default defineConfig({
  11. base: './',
  12. // 路径重定向
  13. resolve: {
  14. alias: [
  15. {
  16. find: /\/#\//,
  17. replacement: pathResolve('types') + '/'
  18. },
  19. {
  20. find: '@',
  21. replacement: pathResolve('src') + '/'
  22. }
  23. ],
  24. dedupe: ['vue']
  25. },
  26. // 全局 css 注册
  27. css: {
  28. preprocessorOptions: {
  29. scss: {
  30. javascriptEnabled: true,
  31. additionalData: `@import "src/styles/common/style.scss";`
  32. }
  33. }
  34. },
  35. plugins: [
  36. vue(),
  37. viteMockServe({
  38. mockPath: "/src/api/mock",
  39. // 开发打包开关
  40. localEnabled: true,
  41. // 生产打包开关
  42. prodEnabled: true,
  43. // 打开后,可以读取 ts 文件模块。 请注意,打开后将无法监视.js 文件
  44. supportTs: true,
  45. // 监视文件更改
  46. watchFiles: true,
  47. }),
  48. // 压缩
  49. viteCompression({
  50. verbose: true,
  51. disable: false,
  52. threshold: 10240,
  53. algorithm: 'gzip',
  54. ext: '.gz'
  55. })
  56. ],
  57. build: {
  58. target: 'es2015',
  59. outDir: OUTPUT_DIR,
  60. terserOptions: terserOptions,
  61. rollupOptions: rollupOptions,
  62. brotliSize: brotliSize,
  63. chunkSizeWarningLimit: chunkSizeWarningLimit
  64. }
  65. })