2023-12-30 17:01:39 +00:00
|
|
|
import VueI18nPlugin from '@intlify/unplugin-vue-i18n/vite';
|
2024-04-04 07:38:20 +00:00
|
|
|
import Virtual from '@rollup/plugin-virtual';
|
2024-09-07 09:09:29 +00:00
|
|
|
import VueDevTools from 'vite-plugin-vue-devtools';
|
2024-04-04 07:38:20 +00:00
|
|
|
import Vue from '@vitejs/plugin-vue';
|
2023-12-30 17:01:39 +00:00
|
|
|
import browserslist from 'browserslist';
|
|
|
|
import { browserslistToTargets } from 'lightningcss';
|
2022-09-08 11:33:57 +00:00
|
|
|
import IconsResolver from 'unplugin-icons/resolver';
|
2023-12-30 17:01:39 +00:00
|
|
|
import Icons from 'unplugin-icons/vite';
|
2022-09-08 22:31:13 +00:00
|
|
|
import {
|
2022-11-17 18:45:35 +00:00
|
|
|
Vuetify3Resolver,
|
2023-12-30 17:01:39 +00:00
|
|
|
VueUseComponentsResolver,
|
2022-11-03 18:00:58 +00:00
|
|
|
VueUseDirectiveResolver
|
2022-09-08 22:31:13 +00:00
|
|
|
} from 'unplugin-vue-components/resolvers';
|
2023-12-30 17:01:39 +00:00
|
|
|
import Components from 'unplugin-vue-components/vite';
|
2024-03-07 09:12:44 +00:00
|
|
|
import UnoCSS from 'unocss/vite';
|
2023-12-30 17:01:39 +00:00
|
|
|
import VueRouter from 'unplugin-vue-router/vite';
|
2024-09-06 10:47:56 +00:00
|
|
|
import { defineConfig } from 'vite';
|
2024-01-01 00:39:30 +00:00
|
|
|
import { entrypoints, localeFilesFolder, srcRoot } from './scripts/paths';
|
2023-12-30 17:01:39 +00:00
|
|
|
import virtualModules from './scripts/virtual-modules';
|
2024-09-06 10:47:56 +00:00
|
|
|
import { JellyfinVueAnalysis } from './scripts/plugins/analysis';
|
2024-09-09 17:59:46 +00:00
|
|
|
import { JellyfinVueChunking } from './scripts/plugins/chunking';
|
2022-09-08 11:33:57 +00:00
|
|
|
|
2024-09-06 10:47:56 +00:00
|
|
|
export default defineConfig({
|
|
|
|
appType: 'spa',
|
|
|
|
base: './',
|
|
|
|
cacheDir: '../node_modules/.cache/vite',
|
|
|
|
plugins: [
|
|
|
|
JellyfinVueAnalysis(),
|
2024-09-09 17:59:46 +00:00
|
|
|
JellyfinVueChunking(),
|
2024-09-06 10:47:56 +00:00
|
|
|
Virtual(virtualModules),
|
|
|
|
VueRouter({
|
|
|
|
dts: './types/global/routes.d.ts',
|
|
|
|
importMode: 'sync',
|
|
|
|
routeBlockLang: 'yaml'
|
|
|
|
}),
|
2024-09-07 09:09:29 +00:00
|
|
|
Vue({
|
|
|
|
template: {
|
|
|
|
transformAssetUrls: {
|
|
|
|
img: []
|
|
|
|
}
|
2024-09-06 10:47:56 +00:00
|
|
|
}
|
|
|
|
}),
|
|
|
|
// This plugin allows to autoimport Vue components
|
|
|
|
Components({
|
|
|
|
dts: './types/global/components.d.ts',
|
2024-01-07 11:37:33 +00:00
|
|
|
/**
|
2024-09-06 10:47:56 +00:00
|
|
|
* The icons resolver finds icons components from 'unplugin-icons' using this convenction:
|
|
|
|
* {prefix}-{collection}-{icon} e.g. <i-mdi-thumb-up />
|
2024-01-07 11:37:33 +00:00
|
|
|
*/
|
2024-09-06 10:47:56 +00:00
|
|
|
resolvers: [
|
|
|
|
IconsResolver(),
|
|
|
|
VueUseComponentsResolver(),
|
|
|
|
Vuetify3Resolver(),
|
|
|
|
VueUseDirectiveResolver()
|
|
|
|
]
|
|
|
|
}),
|
|
|
|
/**
|
|
|
|
* This plugin allows to use all icons from Iconify as vue components
|
|
|
|
* See: https://github.com/antfu/unplugin-icons
|
|
|
|
*/
|
|
|
|
Icons({
|
|
|
|
compiler: 'vue3'
|
|
|
|
}),
|
|
|
|
VueI18nPlugin({
|
|
|
|
runtimeOnly: true,
|
|
|
|
compositionOnly: true,
|
|
|
|
fullInstall: false,
|
|
|
|
forceStringify: true,
|
2024-09-09 17:59:46 +00:00
|
|
|
include: localeFilesFolder,
|
|
|
|
dropMessageCompiler: true
|
2024-09-06 10:47:56 +00:00
|
|
|
}),
|
2024-09-07 09:09:29 +00:00
|
|
|
UnoCSS(),
|
|
|
|
VueDevTools()
|
2024-09-06 10:47:56 +00:00
|
|
|
],
|
|
|
|
build: {
|
|
|
|
/**
|
|
|
|
* See main.ts for an explanation of this target
|
|
|
|
*/
|
|
|
|
target: 'esnext',
|
|
|
|
/**
|
|
|
|
* Disable chunk size warnings
|
|
|
|
*/
|
|
|
|
cssCodeSplit: true,
|
|
|
|
cssMinify: 'lightningcss',
|
|
|
|
modulePreload: false,
|
|
|
|
reportCompressedSize: false,
|
|
|
|
rollupOptions: {
|
|
|
|
input: {
|
|
|
|
splashscreen: entrypoints.splashscreen,
|
|
|
|
main: entrypoints.main,
|
|
|
|
index: entrypoints.index
|
|
|
|
},
|
|
|
|
output: {
|
2024-09-09 17:59:46 +00:00
|
|
|
validate: true
|
2022-09-09 18:28:38 +00:00
|
|
|
}
|
2022-09-12 14:20:18 +00:00
|
|
|
}
|
2024-09-06 10:47:56 +00:00
|
|
|
},
|
|
|
|
css: {
|
|
|
|
lightningcss: {
|
|
|
|
nonStandard: {
|
|
|
|
deepSelectorCombinator: true
|
|
|
|
},
|
|
|
|
targets: browserslistToTargets(browserslist())
|
|
|
|
}
|
|
|
|
},
|
|
|
|
preview: {
|
|
|
|
port: 3000,
|
|
|
|
strictPort: true,
|
|
|
|
host: '0.0.0.0',
|
|
|
|
cors: true
|
|
|
|
},
|
|
|
|
server: {
|
|
|
|
host: '0.0.0.0',
|
|
|
|
port: 3000
|
|
|
|
},
|
|
|
|
resolve: {
|
|
|
|
alias: {
|
|
|
|
'@/': srcRoot
|
|
|
|
}
|
|
|
|
},
|
|
|
|
worker: {
|
|
|
|
format: 'es'
|
|
|
|
}
|
2022-09-08 11:33:57 +00:00
|
|
|
});
|