feat(font): Export Options에 폰트 preconnect 토글 추가 및 exporter 옵션 연동
Auto PR / open-pr (push) Failing after 14s
Auto Label PR / add-automerge-label (pull_request) Successful in 8s
CI / test (pull_request) Failing after 36s

This commit is contained in:
2025-11-15 14:22:41 +09:00
parent 31eaa9343a
commit 2d6afaf665
3 changed files with 84 additions and 11 deletions
+6 -6
View File
@@ -2,7 +2,7 @@ import type { Page, FormField } from '@/lib/schema/page'
import type { AssetManager } from '@/lib/assets/assetManager'
export type Exported = { html: string; css: string; js: string }
export type ExportOptions = { assetManager?: AssetManager }
export type ExportOptions = { assetManager?: AssetManager; fontPreconnect?: boolean }
function renderFaq(section: { props: { items: Array<{ q: string; a: string }> } }) {
const itemsRaw: Array<{ q: string; a: string }> = Array.isArray(section.props.items) ? section.props.items : []
@@ -222,7 +222,7 @@ function renderForm(page: Page) {
`
}
function buildHead(page: Page) {
function buildHead(page: Page, opts?: ExportOptions) {
const ogImage = page.seo.ogImage
const analyticsParts: string[] = []
const ga = page.analytics?.ga4MeasurementId
@@ -250,11 +250,13 @@ function buildHead(page: Page) {
</script>`)
}
const custom = page.analytics?.customHeadHtml || ''
const preconnect = opts?.fontPreconnect !== false
return `
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="canonical" href="/" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
${preconnect ? '<link rel="preconnect" href="https://fonts.googleapis.com" />' : ''}
${preconnect ? '<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />' : ''}
<link rel="manifest" href="/site.webmanifest" />
<meta name="theme-color" content="${escapeHtml(page.theme.primaryColor)}" />
<title>${escapeHtml(page.seo.title)}</title>
@@ -338,9 +340,7 @@ export function exportPage(page: Page, opts?: ExportOptions): Exported {
const html = `<!DOCTYPE html>
<html lang="${escapeHtml(page.locale)}">
<head>
${buildHead(page)}
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
${buildHead(page, opts)}
</head>
<body>
<a href="#main" class="skip-link">Skip to content</a>