2023-10-20 15:15:28 +02:00
|
|
|
/// <reference types="vitest" />
|
|
|
|
import vue from '@vitejs/plugin-vue'
|
2024-06-02 16:27:42 +02:00
|
|
|
import { resolve } from 'node:path'
|
2023-10-20 15:15:28 +02:00
|
|
|
import { fileURLToPath, URL } from 'node:url'
|
2022-12-08 16:19:29 +08:00
|
|
|
import { defineConfig, loadEnv } from 'vite'
|
2024-03-08 22:31:09 +08:00
|
|
|
import topLevelAwait from 'vite-plugin-top-level-await'
|
2024-06-02 16:27:42 +02:00
|
|
|
import vuetify from 'vite-plugin-vuetify'
|
2022-11-15 09:36:54 +01:00
|
|
|
|
2023-10-20 15:15:28 +02:00
|
|
|
// https://vitejs.dev/config/
|
2023-12-21 05:07:46 +01:00
|
|
|
export default defineConfig(({ mode }) => {
|
2023-10-20 15:15:28 +02:00
|
|
|
const env = loadEnv(mode, process.cwd())
|
2024-10-18 09:21:52 +02:00
|
|
|
const qBittorrentTarget = env.VITE_QBITTORRENT_TARGET ?? 'http://localhost:8080'
|
|
|
|
const backendTarget = env.VITE_BACKEND_TARGET ?? 'http://localhost:3000'
|
2023-10-20 15:15:28 +02:00
|
|
|
|
2022-12-08 16:19:29 +08:00
|
|
|
return {
|
2023-01-24 17:10:59 +01:00
|
|
|
base: './',
|
|
|
|
build: {
|
|
|
|
target: 'esnext',
|
2024-05-18 10:26:02 +02:00
|
|
|
outDir: mode === 'demo' ? './vuetorrent-demo' : './vuetorrent/public',
|
2023-01-24 17:10:59 +01:00
|
|
|
rollupOptions: {
|
|
|
|
output: {
|
|
|
|
manualChunks: {
|
2023-11-09 14:39:08 +01:00
|
|
|
// apexcharts: ['apexcharts', 'vue3-apexcharts'],
|
2024-04-15 12:25:00 +02:00
|
|
|
vue: ['vue', 'vue-router', 'vue-i18n', 'vue3-toastify', 'vuedraggable', 'pinia', 'pinia-persistence-plugin'],
|
2023-11-09 04:26:41 +01:00
|
|
|
vuetify: ['vuetify']
|
2023-01-24 17:10:59 +01:00
|
|
|
}
|
|
|
|
}
|
2023-10-20 15:15:28 +02:00
|
|
|
}
|
2023-01-24 17:10:59 +01:00
|
|
|
},
|
|
|
|
define: {
|
2023-12-21 05:07:46 +01:00
|
|
|
'import.meta.env.VITE_PACKAGE_VERSION': JSON.stringify(process.env.npm_package_version),
|
2023-01-24 17:10:59 +01:00
|
|
|
'process.env': {}
|
2022-12-08 16:19:29 +08:00
|
|
|
},
|
2024-03-08 22:31:09 +08:00
|
|
|
plugins: [
|
|
|
|
vue(),
|
|
|
|
vuetify(),
|
|
|
|
topLevelAwait({
|
|
|
|
promiseExportName: '__tla',
|
2024-06-10 23:42:21 +02:00
|
|
|
promiseImportName: i => `__tla_${i}`
|
2024-03-10 03:54:33 +01:00
|
|
|
})
|
|
|
|
],
|
2023-01-24 17:10:59 +01:00
|
|
|
publicDir: './public',
|
|
|
|
resolve: {
|
|
|
|
alias: {
|
2023-10-20 15:15:28 +02:00
|
|
|
'@': fileURLToPath(new URL('./src', import.meta.url))
|
|
|
|
}
|
2022-11-15 09:36:54 +01:00
|
|
|
},
|
2022-12-08 16:19:29 +08:00
|
|
|
server: {
|
2023-02-19 12:28:31 +01:00
|
|
|
host: '0.0.0.0',
|
|
|
|
port: 3000,
|
2022-12-08 16:19:29 +08:00
|
|
|
proxy: {
|
2023-10-20 15:15:28 +02:00
|
|
|
'/api': {
|
2024-06-02 16:27:42 +02:00
|
|
|
secure: false,
|
2024-10-18 09:21:52 +02:00
|
|
|
changeOrigin: true,
|
|
|
|
target: qBittorrentTarget
|
2024-09-18 21:43:47 -05:00
|
|
|
},
|
|
|
|
'/backend': {
|
|
|
|
secure: false,
|
2024-10-18 09:21:52 +02:00
|
|
|
changeOrigin: true,
|
|
|
|
target: backendTarget
|
2023-10-20 15:15:28 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
test: {
|
|
|
|
environment: 'jsdom',
|
2024-04-25 13:26:39 +02:00
|
|
|
globals: true,
|
2023-10-20 15:15:28 +02:00
|
|
|
setupFiles: [resolve(__dirname, 'tests/setup.ts')],
|
|
|
|
coverage: {
|
|
|
|
reportsDirectory: './tests/unit/coverage'
|
|
|
|
},
|
|
|
|
server: {
|
|
|
|
deps: {
|
|
|
|
inline: ['vuetify']
|
|
|
|
}
|
2022-12-08 16:19:29 +08:00
|
|
|
}
|
2022-11-15 09:36:54 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|