vite.config.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  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. const outDir = `dist-tt2.0.1.build${new Date().getFullYear()}${new Date().getMonth() + 1}${new Date().getDate()}`;
  15. // https://vitejs.dev/config/
  16. export default ({ mode, command }) => {
  17. // const env = loadEnv(mode, process.cwd())
  18. return defineConfig({
  19. base: '/foreground/',
  20. build: {
  21. outDir,
  22. sourcemap: false,
  23. minify: true,
  24. rollupOptions: {
  25. output: {
  26. chunkFileNames: 'js/[hash].js',
  27. entryFileNames: 'js/[hash].js',
  28. assetFileNames: (assetsFile) => {
  29. if (/\.(vue|scss)$/i.test(assetsFile.name)) {
  30. return 'del/[name]-[hash].[ext]'
  31. } else {
  32. return 'static/[hash].[ext]'
  33. }
  34. }
  35. }
  36. }
  37. },
  38. plugins: [
  39. vue(),
  40. vueJsx(),
  41. basicSsl(),
  42. Unocss({
  43. presets: [presetUno(), presetAttributify(), presetIcons()]
  44. }),
  45. AutoImport({
  46. imports: [
  47. 'vue',
  48. 'vue-router',
  49. 'pinia',
  50. {
  51. '@/api': ['useRequest']
  52. }
  53. ],
  54. eslintrc: {
  55. enabled: false, // Default `false`
  56. filepath: './.eslintrc-auto-import.json', // Default `./.eslintrc-auto-import.json`
  57. globalsPropValue: true // Default `true`, (true | false | 'readonly' | 'readable' | 'writable' | 'writeable')
  58. }
  59. }),
  60. Components({
  61. dirs: ['src/components'],
  62. resolvers: [
  63. // IconsResolver({
  64. // prefix: 'i',
  65. // alias: {
  66. // system: 'system-uicons'
  67. // }
  68. // })
  69. ]
  70. }),
  71. Icons({}),
  72. deletePlugin({
  73. targets: [`${outDir}/del`],
  74. hook: 'writeBundle'
  75. })
  76. ],
  77. resolve: {
  78. alias: {
  79. '@': path.resolve(__dirname, 'src'),
  80. assets: path.resolve(__dirname, 'src/assets'),
  81. util: path.resolve(__dirname, 'src/util'),
  82. views: path.resolve(__dirname, 'src/views'),
  83. layout: path.resolve(__dirname, 'src/layout')
  84. }
  85. },
  86. css: {
  87. preprocessorOptions: {
  88. scss: {
  89. api: 'modern-compiler',
  90. //忽略警告提示
  91. silenceDeprecations: ['legacy-js-api', 'import']
  92. }
  93. }
  94. },
  95. // preprocessorOptions: {
  96. // scss: {
  97. // additionalData: `@import "@/assets/base.scss";`
  98. // }
  99. // },
  100. define: {
  101. __DEV__: mode === 'development',
  102. __TEST__: mode === 'test'
  103. }
  104. })
  105. }