import type { UserConfig } from 'vite'
import type { ViteSSGOptions } from 'vite-ssg'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import generateSitemap from 'vite-ssg-sitemap'
import { fileURLToPath, URL } from 'node:url'

// https://vite.dev/config/
const config = {
	ssg: {
		// 静默所有警告
		silent: true,
		
		// 或者只忽略特定警告
		onWarning: (warning, message) => {
			// 忽略 ResizeObserver 和 localStorage 相关警告
			if (message.includes('ResizeObserver')) {
				return;
			}
			console.warn(warning);
		}
	},
	
	// 全局定义模拟对象
	define: {
		'ResizeObserver': 'typeof ResizeObserver !== "undefined" ? ResizeObserver : class ResizeObserver { observe() {} unobserve() {} disconnect() {} }',
	},
	base: '/',
	plugins: [vue()],
	ssr: {
		noExternal: ['@kagol/vue-carousel']
	},
	ssgOptions: {
		mock: true,
		dirStyle: 'nested',
		script: 'defer',
		onFinished() {
			generateSitemap({
				// 1. 必填：你官网部署后的正式域名。
				// 生成的 sitemap.xml 里需要用这个域名 + 路由路径拼成完整 URL (如 https://site.com/about)
				hostname: 'https://your-website.com/',

				// 2. 扫描目录：通常是打包后的输出目录
				outDir: 'dist'
			})
		}
	},
	resolve: {
		alias: {
			'@': fileURLToPath(new URL('./src', import.meta.url)),
			_c: fileURLToPath(new URL('./src/components', import.meta.url))
		}
	},
} satisfies UserConfig & { ssgOptions: ViteSSGOptions }

export default defineConfig(config)
