import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import { resolve } from 'path' import { batiaoPlugin } from '@batiao/batiao-sdk-vue-vite/onBuild' import proxy from './src/proxy.cjs' import fs from 'fs' import axios from 'axios' const copyPublicPlugin = () => { return { name: 'copy-src-public', closeBundle() { const srcDir = resolve(__dirname, 'src/public') const destDir = resolve(__dirname, 'dist/src/public') try { if (fs.existsSync(srcDir)) { fs.mkdirSync(destDir, { recursive: true }) fs.cpSync(srcDir, destDir, { recursive: true }) console.log('[copy-src-public] 成功将 src/public 复制到 dist/src/public') } } catch (err) { console.error('[copy-src-public] 复制失败:', err) } } } } const seoInjectionPlugin = () => { return { name: 'seo-injection', async transformIndexHtml(html, ctx) { if (ctx.originalUrl && ctx.originalUrl.includes('/article-detail')) { const urlObj = new URL(ctx.originalUrl, 'http://localhost') const id = urlObj.searchParams.get('id') if (id) { try { const res = await axios.get(`http://wechat.wenyitu.com/api/articles/${id}`) const article = res.data if (article) { let newHtml = html if (article.title) { newHtml = newHtml.replace(/.*?<\/title>/, `<title>${article.title} - 装样大师`) } if (article.seo_keywords) { newHtml = newHtml.replace(/ 0 && data.items[0].category) { let newHtml = html const category = data.items[0].category if (category.seo_keywords) { newHtml = newHtml.replace(/