vite.config.js 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. import path from 'path'
  2. import { defineConfig } from 'vite'
  3. import vue from '@vitejs/plugin-vue'
  4. import vueJsx from '@vitejs/plugin-vue-jsx'
  5. import AutoImport from 'unplugin-auto-import/vite'
  6. import Components from 'unplugin-vue-components/vite'
  7. import Icons from 'unplugin-icons/vite'
  8. // import viteCompression from 'vite-plugin-compression'
  9. import basicSsl from '@vitejs/plugin-basic-ssl'
  10. import Unocss from 'unocss/vite'
  11. import { presetUno, presetAttributify, presetIcons } from 'unocss'
  12. import deletePlugin from 'rollup-plugin-delete'
  13. // const IconsResolver = require('unplugin-icons/resolver')
  14. // https://vitejs.dev/config/
  15. export default ({ mode, command }) => {
  16. // const env = loadEnv(mode, process.cwd())
  17. return defineConfig({
  18. base: '/foreground/',
  19. build: {
  20. outDir: 'dist-tt',
  21. sourcemap: false,
  22. minify: true,
  23. rollupOptions: {
  24. output: {
  25. chunkFileNames: 'js/[hash].js',
  26. entryFileNames: 'js/[hash].js',
  27. assetFileNames: (assetsFile) => {
  28. if (/\.(vue|scss)$/i.test(assetsFile.name)) {
  29. return 'del/[name]-[hash].[ext]'
  30. } else {
  31. return 'static/[hash].[ext]'
  32. }
  33. }
  34. }
  35. }
  36. },
  37. plugins: [
  38. vue(),
  39. vueJsx(),
  40. basicSsl(),
  41. Unocss({
  42. presets: [presetUno(), presetAttributify(), presetIcons()]
  43. }),
  44. AutoImport({
  45. imports: [
  46. 'vue',
  47. 'vue-router',
  48. 'pinia',
  49. {
  50. '@/api': ['useRequest']
  51. }
  52. ],
  53. eslintrc: {
  54. enabled: false, // Default `false`
  55. filepath: './.eslintrc-auto-import.json', // Default `./.eslintrc-auto-import.json`
  56. globalsPropValue: true // Default `true`, (true | false | 'readonly' | 'readable' | 'writable' | 'writeable')
  57. }
  58. }),
  59. Components({
  60. dirs: ['src/components'],
  61. resolvers: [
  62. // IconsResolver({
  63. // prefix: 'i',
  64. // alias: {
  65. // system: 'system-uicons'
  66. // }
  67. // })
  68. ]
  69. }),
  70. Icons({}),
  71. deletePlugin({
  72. targets: ['dist-tt/del'],
  73. hook: 'writeBundle'
  74. })
  75. ],
  76. resolve: {
  77. alias: {
  78. '@': path.resolve(__dirname, 'src'),
  79. assets: path.resolve(__dirname, 'src/assets'),
  80. util: path.resolve(__dirname, 'src/util'),
  81. views: path.resolve(__dirname, 'src/views'),
  82. layout: path.resolve(__dirname, 'src/layout')
  83. }
  84. },
  85. // preprocessorOptions: {
  86. // scss: {
  87. // additionalData: `@import "@/assets/base.scss";`
  88. // }
  89. // },
  90. define: {
  91. __DEV__: mode === 'development',
  92. __TEST__: mode === 'test'
  93. }
  94. })
  95. }