1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- import { defineConfig } from 'vite'
- import vue from '@vitejs/plugin-vue'
- import yaml from 'js-yaml'
- import fs from 'node:fs'
- import { fileURLToPath } from 'node:url'
- import { quasar, transformAssetUrls } from '@quasar/vite-plugin'
- // https://vitejs.dev/config/
- export default defineConfig(({ mode }) => {
- const userConfig = mode === 'development' ? {
- dev: { port: 3001, hmrClientPort: 3001 },
- ...yaml.load(fs.readFileSync(fileURLToPath(new URL('../config.yml', import.meta.url)), 'utf8'))
- } : {}
- return {
- build: {
- assetsDir: '_assets',
- chunkSizeWarningLimit: 5000,
- dynamicImportVarsOptions: {
- warnOnError: true,
- include: ['!/_blocks/**']
- },
- outDir: '../assets',
- target: 'es2022',
- ...(mode === 'production') && {
- rollupOptions: {
- output: {
- manualChunks (id) {
- if (id.includes('lodash')) {
- return 'lodash'
- // } else if (id.includes('quasar')) {
- // return 'quasar'
- } else if (id.includes('pages/Admin')) {
- return 'admin'
- } else if (id.includes('pages/Profile')) {
- return 'profile'
- }
- }
- }
- }
- }
- },
- optimizeDeps: {
- include: [
- 'prosemirror-state',
- 'prosemirror-transform',
- 'prosemirror-model',
- 'prosemirror-view'
- ]
- },
- plugins: [
- vue({
- template: { transformAssetUrls }
- }),
- quasar({
- autoImportComponentCase: 'kebab',
- sassVariables: '@/css/_theme.scss'
- })
- ],
- resolve: {
- alias: {
- '@': fileURLToPath(new URL('./src', import.meta.url))
- }
- },
- server: {
- // https: true
- open: false, // opens browser window automatically
- port: userConfig.dev?.port,
- proxy: ['_graphql', '_blocks', '_site', '_thumb', '_user'].reduce((result, key) => {
- result[`/${key}`] = {
- target: {
- host: '127.0.0.1',
- port: userConfig.port
- }
- }
- return result
- }, {}),
- hmr: {
- clientPort: userConfig.dev?.hmrClientPort
- }
- }
- }
- })
|