vite.config.mjs 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. // Plugins
  2. import Components from 'unplugin-vue-components/vite'
  3. import Vue from '@vitejs/plugin-vue'
  4. import Vuetify, { transformAssetUrls } from 'vite-plugin-vuetify'
  5. // import ViteFonts from 'unplugin-fonts/vite'
  6. import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
  7. import AutoImport from 'unplugin-auto-import/vite'
  8. import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
  9. import path from 'path'
  10. // Utilities
  11. import { defineConfig } from 'vite'
  12. import { fileURLToPath, URL } from 'node:url'
  13. // https://vitejs.dev/config/
  14. export default defineConfig({
  15. plugins: [
  16. Vue({
  17. template: { transformAssetUrls }
  18. }),
  19. // https://github.com/vuetifyjs/vuetify-loader/tree/master/packages/vite-plugin#readme
  20. Vuetify(),
  21. Components({
  22. dts: true,
  23. resolvers: [
  24. (name) => {
  25. if (name.startsWith('Base')) {
  26. return { importName: name.slice(4), path: `@/components/CtVuetify/${name}.vue` }
  27. }
  28. },
  29. ElementPlusResolver(),
  30. ]
  31. }),
  32. AutoImport({
  33. resolvers: [ElementPlusResolver()],
  34. }),
  35. createSvgIconsPlugin({
  36. iconDirs: [path.resolve(process.cwd(), 'src/assets/svg')],
  37. // symbolId: 'icon-[dir]-[name]',
  38. })
  39. // ViteFonts({
  40. // google: {
  41. // // families: [{
  42. // // name: 'Roboto',
  43. // // styles: 'wght@100;300;400;500;700;900',
  44. // // }],
  45. // },
  46. // }),
  47. ],
  48. define: { 'process.env': {} },
  49. resolve: {
  50. alias: {
  51. '@': fileURLToPath(new URL('./src', import.meta.url))
  52. },
  53. extensions: [
  54. '.js',
  55. '.json',
  56. '.jsx',
  57. '.mjs',
  58. '.ts',
  59. '.tsx',
  60. '.vue',
  61. ],
  62. },
  63. build: {
  64. rollupOptions: {
  65. output: {
  66. // 设置静态资源引用的基础路径
  67. assetFileNames: 'assets/[name].[ext]',
  68. chunkFileNames: 'chunks/[name].[hash].js',
  69. entryFileNames: '[name].js',
  70. },
  71. watch: true // 允许浏览器在源码变化时自动刷新
  72. },
  73. },
  74. // 配置静态资源处理
  75. publicDir: 'public', // 设置静态资源目录
  76. assetsDir: 'assets', // 设置构建后的静态资源目录
  77. base: '/', // 设置应用的基本URL
  78. server: {
  79. port: 3000
  80. }
  81. // configureWebpack: {
  82. // output: {
  83. // filename: 'js/[name].' + new Date().getTime() + '.js',
  84. // chunkFilename: 'js/[name].' + new Date().getTime() + '.js'
  85. // }
  86. // }
  87. })