vite.config.website.ts 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import { defineConfig } from 'vite'
  2. import vue from '@vitejs/plugin-vue'
  3. import { resolve } from 'path'
  4. import pkg from './package.json'
  5. const websiteDownloadVersion = process.env.WEBSITE_DOWNLOAD_VERSION?.trim() || pkg.version
  6. export default defineConfig({
  7. root: 'packages/website',
  8. plugins: [vue()],
  9. define: {
  10. __APP_VERSION__: JSON.stringify(pkg.version),
  11. __WEBSITE_DOWNLOAD_VERSION__: JSON.stringify(websiteDownloadVersion),
  12. },
  13. resolve: {
  14. alias: {
  15. '@': resolve(__dirname, 'packages/website/src'),
  16. '@client': resolve(__dirname, 'packages/client/src'),
  17. },
  18. },
  19. css: {
  20. preprocessorOptions: {
  21. scss: {
  22. additionalData: `@use "@/styles/variables" as *;\n`,
  23. },
  24. },
  25. },
  26. build: {
  27. outDir: '../../dist/website',
  28. emptyOutDir: true,
  29. minify: 'esbuild',
  30. sourcemap: false,
  31. target: 'es2020',
  32. cssCodeSplit: true,
  33. rollupOptions: {
  34. output: {
  35. manualChunks(id) {
  36. if (id.includes('node_modules')) {
  37. if (id.includes('vue') || id.includes('vue-router') || id.includes('vue-i18n') || id.includes('pinia')) {
  38. return 'vue-vendor'
  39. }
  40. if (id.includes('naive-ui')) {
  41. return 'ui-vendor'
  42. }
  43. return 'vendor'
  44. }
  45. },
  46. chunkFileNames: 'assets/js/[name]-[hash].js',
  47. entryFileNames: 'assets/js/[name]-[hash].js',
  48. assetFileNames: 'assets/[ext]/[name]-[hash].[ext]',
  49. },
  50. },
  51. },
  52. server: {
  53. port: 3000,
  54. },
  55. })
粤ICP备19079148号