first commit
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
import { defineConfig } from 'vite';
|
||||
import vue from '@vitejs/plugin-vue';
|
||||
|
||||
// preview 전용: nginx 의 try_files ($uri/index.html) 처럼 /경로 -> /경로/index.html 로 서빙
|
||||
const servePrerenderedDirs = () => ({
|
||||
name: 'serve-prerendered-dirs',
|
||||
configurePreviewServer(server) {
|
||||
const outDir = path.resolve(server.config.root, server.config.build.outDir);
|
||||
server.middlewares.use((req, res, next) => {
|
||||
const [pathname, query] = (req.url || '/').split('?');
|
||||
if (!pathname.endsWith('/') && !path.extname(pathname) && fs.existsSync(path.join(outDir, pathname, 'index.html'))) {
|
||||
req.url = `${pathname}/${query ? `?${query}` : ''}`;
|
||||
}
|
||||
next();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
export default defineConfig(({ isPreview }) => ({
|
||||
plugins: [vue(), servePrerenderedDirs()],
|
||||
// 사전 렌더링된 /경로/index.html 을 그대로 서빙 (preview 에서 SPA 폴백으로 덮어쓰지 않도록)
|
||||
appType: isPreview ? 'mpa' : 'spa',
|
||||
ssr: {
|
||||
// Cloudflare Workers (_worker.js) 단일 번들 실행을 위해 모든 의존성을 인라인 번들링
|
||||
noExternal: true
|
||||
},
|
||||
build: {
|
||||
emptyOutDir: false
|
||||
},
|
||||
define: {
|
||||
__BUILD_DATE__: JSON.stringify(new Date().toISOString().slice(0, 10))
|
||||
}
|
||||
}));
|
||||
Reference in New Issue
Block a user