vite.config.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import { defineConfig } from 'vite'
  2. import vue from '@vitejs/plugin-vue'
  3. import yaml from 'js-yaml'
  4. import fs from 'node:fs'
  5. import { fileURLToPath } from 'node:url'
  6. import { quasar, transformAssetUrls } from '@quasar/vite-plugin'
  7. // https://vitejs.dev/config/
  8. export default defineConfig(({ mode }) => {
  9. const userConfig = mode === 'development' ? {
  10. dev: { port: 3001, hmrClientPort: 3001 },
  11. ...yaml.load(fs.readFileSync(fileURLToPath(new URL('../config.yml', import.meta.url)), 'utf8'))
  12. } : {}
  13. return {
  14. build: {
  15. assetsDir: '_assets',
  16. chunkSizeWarningLimit: 5000,
  17. dynamicImportVarsOptions: {
  18. warnOnError: true,
  19. include: ['!/_blocks/**']
  20. },
  21. outDir: '../assets',
  22. target: 'es2022',
  23. ...(mode === 'production') && {
  24. rollupOptions: {
  25. output: {
  26. manualChunks (id) {
  27. if (id.includes('lodash')) {
  28. return 'lodash'
  29. // } else if (id.includes('quasar')) {
  30. // return 'quasar'
  31. } else if (id.includes('pages/Admin')) {
  32. return 'admin'
  33. } else if (id.includes('pages/Profile')) {
  34. return 'profile'
  35. }
  36. }
  37. }
  38. }
  39. }
  40. },
  41. optimizeDeps: {
  42. include: [
  43. 'prosemirror-state',
  44. 'prosemirror-transform',
  45. 'prosemirror-model',
  46. 'prosemirror-view'
  47. ]
  48. },
  49. plugins: [
  50. vue({
  51. template: { transformAssetUrls }
  52. }),
  53. quasar({
  54. autoImportComponentCase: 'kebab',
  55. sassVariables: '@/css/_theme.scss'
  56. })
  57. ],
  58. resolve: {
  59. alias: {
  60. '@': fileURLToPath(new URL('./src', import.meta.url))
  61. }
  62. },
  63. server: {
  64. // https: true
  65. open: false, // opens browser window automatically
  66. port: userConfig.dev?.port,
  67. proxy: ['_graphql', '_blocks', '_site', '_thumb', '_user'].reduce((result, key) => {
  68. result[`/${key}`] = {
  69. target: {
  70. host: '127.0.0.1',
  71. port: userConfig.port
  72. }
  73. }
  74. return result
  75. }, {}),
  76. hmr: {
  77. clientPort: userConfig.dev?.hmrClientPort
  78. }
  79. }
  80. }
  81. })