ytptube/ui/nuxt.config.ts
2025-12-19 19:48:22 +03:00

93 lines
2.3 KiB
TypeScript

import path from "path";
let extraNitro = {}
try {
const API_URL = process.env.NUXT_API_URL;
if (API_URL) {
extraNitro = {
devProxy: {
'/api/': {
target: API_URL,
changeOrigin: true
}
}
}
}
}
catch { }
export default defineNuxtConfig({
ssr: false,
devtools: { enabled: false },
devServer: {
port: 8082,
host: "0.0.0.0",
},
css: [
'vue-toastification/dist/index.css'
],
runtimeConfig: {
public: {
APP_ENV: process.env.NODE_ENV,
wss: process.env.NUXT_PUBLIC_WSS ?? ''
}
},
build: {
transpile: ['vue-toastification'],
},
app: {
baseURL: 'production' == process.env.NODE_ENV ? '/_base_path/' : '/',
buildAssetsDir: "assets",
head: {
"meta": [
{ "charset": "utf-8" },
{ "name": "viewport", "content": "width=device-width, initial-scale=1.0, maximum-scale=1.0" },
{ "name": "theme-color", "content": "#000000" },
{ "name": "mobile-web-app-capable", "content": "yes" },
{ "name": "apple-mobile-web-app-capable", "content": "yes" },
{ "name": "apple-mobile-web-app-status-bar-style", "content": "black-translucent" },
{ "name": "apple-mobile-web-app-title", "content": "YTPTube" },
],
base: { "href": "/" },
link: [
{ rel: 'icon', type: 'image/x-icon', href: 'favicon.ico?v=100' },
{ rel: 'manifest', href: 'manifest.webmanifest?v=100' },
{ rel: 'apple-touch-icon', href: 'images/favicon.png' },
{ rel: 'apple-touch-startup-image', href: 'images/logo.png' }
]
},
pageTransition: { name: 'page', mode: 'out-in' }
},
router: {
options: {
linkActiveClass: "is-selected",
}
},
modules: [
'@pinia/nuxt',
'@vueuse/nuxt',
'floating-vue/nuxt',
'development' === process.env.NODE_ENV ? '@nuxt/eslint' : '',
].filter(Boolean),
nitro: {
output: {
publicDir: path.join(__dirname, 'production' === process.env.NODE_ENV ? 'exported' : 'dist')
},
...extraNitro,
},
vite: {
server: {
allowedHosts: true,
},
build: {
chunkSizeWarningLimit: 2000,
}
},
telemetry: false,
compatibilityDate: "2025-08-03",
experimental: {
checkOutdatedBuildInterval: 1000 * 60 * 10,
}
})