diff --git a/package.json b/package.json index fe340e4..918d6d8 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "scripts": { "dev": "vite", "build": "vite build && vite build --ssr src/entry-server.jsx --outDir dist/server && node scripts/prerender.mjs", + "deploy": "BUILD_DIR=../public_html vite build && BUILD_DIR=../public_html vite build --ssr src/entry-server.jsx --outDir ../public_html/server && BUILD_DIR=../public_html node scripts/prerender.mjs", "preview": "vite preview" }, "dependencies": { diff --git a/scripts/prerender.mjs b/scripts/prerender.mjs index 2a49a1a..535b7c0 100644 --- a/scripts/prerender.mjs +++ b/scripts/prerender.mjs @@ -4,18 +4,19 @@ import { fileURLToPath } from 'url' const __dirname = dirname(fileURLToPath(import.meta.url)) const root = resolve(__dirname, '..') +const buildDir = process.env.BUILD_DIR || 'dist' // Import SSR bundle built by vite build --ssr -const { render } = await import('../dist/server/entry-server.js') +const { render } = await import(`../${buildDir}/server/entry-server.js`) -let html = readFileSync(resolve(root, 'dist/index.html'), 'utf-8') +let html = readFileSync(resolve(root, buildDir, 'index.html'), 'utf-8') // Inject prerendered HTML const appHtml = render() html = html.replace('
', `
${appHtml}
`) // Fix preload font: find actual cyrillic-700 woff2 hash in dist/assets -const assetsDir = resolve(root, 'dist/assets') +const assetsDir = resolve(root, buildDir, 'assets') const fontFile = readdirSync(assetsDir).find(f => f.match(/manrope-cyrillic-700-normal-.+\.woff2/)) if (fontFile) { html = html.replace( @@ -25,9 +26,9 @@ if (fontFile) { console.log(`✓ Preload font updated: ${fontFile}`) } -writeFileSync(resolve(root, 'dist/index.html'), html) +writeFileSync(resolve(root, buildDir, 'index.html'), html) // Cleanup SSR bundle -rmSync(resolve(root, 'dist/server'), { recursive: true, force: true }) +rmSync(resolve(root, buildDir, 'server'), { recursive: true, force: true }) console.log('✓ Prerendered index.html') diff --git a/vite.config.js b/vite.config.js index 9f60fec..7961741 100644 --- a/vite.config.js +++ b/vite.config.js @@ -4,6 +4,6 @@ import react from '@vitejs/plugin-react' export default defineConfig({ plugins: [react()], build: { - outDir: 'dist', + outDir: process.env.BUILD_DIR || 'dist', }, })