vite.config.js 2.3 KB

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