vite.config.ts 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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. import monacoEditorPlugin from 'vite-plugin-monaco-editor'
  8. function pathResolve(dir: string) {
  9. return resolve(process.cwd(), '.', dir)
  10. }
  11. export default defineConfig({
  12. base: '/',
  13. // 路径重定向
  14. resolve: {
  15. alias: [
  16. {
  17. find: /\/#\//,
  18. replacement: pathResolve('types')
  19. },
  20. {
  21. find: '@',
  22. replacement: pathResolve('src')
  23. },
  24. {
  25. find: 'vue-i18n',
  26. replacement: 'vue-i18n/dist/vue-i18n.cjs.js', //解决i8n警告
  27. }
  28. ],
  29. dedupe: ['vue']
  30. },
  31. // 全局 css 注册
  32. css: {
  33. preprocessorOptions: {
  34. scss: {
  35. javascriptEnabled: true,
  36. additionalData: `@import "src/styles/common/style.scss";`
  37. }
  38. }
  39. },
  40. plugins: [
  41. vue(),
  42. monacoEditorPlugin({
  43. languageWorkers: ['editorWorkerService', 'typescript', 'json', 'html']
  44. }),
  45. viteMockServe({
  46. mockPath: '/src/api/mock',
  47. // 开发打包开关
  48. localEnabled: true,
  49. // 生产打包开关
  50. prodEnabled: true,
  51. // 打开后,可以读取 ts 文件模块。 请注意,打开后将无法监视.js 文件
  52. supportTs: true,
  53. // 监视文件更改
  54. watchFiles: true
  55. }),
  56. // 压缩
  57. viteCompression({
  58. verbose: true,
  59. disable: false,
  60. threshold: 10240,
  61. algorithm: 'gzip',
  62. ext: '.gz'
  63. })
  64. ],
  65. build: {
  66. target: 'es2015',
  67. outDir: OUTPUT_DIR,
  68. // minify: 'terser', // 如果需要用terser混淆,可打开这两行
  69. // terserOptions: terserOptions,
  70. rollupOptions: rollupOptions,
  71. brotliSize: brotliSize,
  72. chunkSizeWarningLimit: chunkSizeWarningLimit
  73. }
  74. })