@kamod-ch/preactpress 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (521) hide show
  1. package/README.md +87 -49
  2. package/bin/preactpress.mjs +5 -5
  3. package/dist/client/app.d.ts +1 -1
  4. package/dist/client/app.d.ts.map +1 -1
  5. package/dist/client/app.js +34 -38
  6. package/dist/client/app.js.map +1 -1
  7. package/dist/client/entry-client.js +11 -12
  8. package/dist/client/entry-client.js.map +1 -1
  9. package/dist/client/entry-ssr.d.ts +2 -2
  10. package/dist/client/entry-ssr.d.ts.map +1 -1
  11. package/dist/client/entry-ssr.js +16 -16
  12. package/dist/client/entry-ssr.js.map +1 -1
  13. package/dist/client/index.d.ts +3 -2
  14. package/dist/client/index.d.ts.map +1 -1
  15. package/dist/client/index.js +2 -1
  16. package/dist/client/index.js.map +1 -1
  17. package/dist/client/loadPage.d.ts +1 -1
  18. package/dist/client/loadPage.d.ts.map +1 -1
  19. package/dist/client/loadPage.js +12 -12
  20. package/dist/client/loadPage.js.map +1 -1
  21. package/dist/client/prefetchLinks.js +4 -4
  22. package/dist/client/prefetchLinks.js.map +1 -1
  23. package/dist/client/theme-default/AlgoliaSearch.d.ts +3 -3
  24. package/dist/client/theme-default/AlgoliaSearch.d.ts.map +1 -1
  25. package/dist/client/theme-default/AlgoliaSearch.js +15 -15
  26. package/dist/client/theme-default/AlgoliaSearch.js.map +1 -1
  27. package/dist/client/theme-default/Features.d.ts +2 -2
  28. package/dist/client/theme-default/Features.d.ts.map +1 -1
  29. package/dist/client/theme-default/Features.js +10 -8
  30. package/dist/client/theme-default/Features.js.map +1 -1
  31. package/dist/client/theme-default/Hero.d.ts +2 -2
  32. package/dist/client/theme-default/Hero.d.ts.map +1 -1
  33. package/dist/client/theme-default/Hero.js +9 -7
  34. package/dist/client/theme-default/Hero.js.map +1 -1
  35. package/dist/client/theme-default/Layout.d.ts +3 -3
  36. package/dist/client/theme-default/Layout.d.ts.map +1 -1
  37. package/dist/client/theme-default/Layout.js +56 -99
  38. package/dist/client/theme-default/Layout.js.map +1 -1
  39. package/dist/client/theme-default/Logo.d.ts +2 -2
  40. package/dist/client/theme-default/Logo.d.ts.map +1 -1
  41. package/dist/client/theme-default/Logo.js +8 -8
  42. package/dist/client/theme-default/Logo.js.map +1 -1
  43. package/dist/client/theme-default/NavLinks.d.ts +2 -2
  44. package/dist/client/theme-default/NavLinks.d.ts.map +1 -1
  45. package/dist/client/theme-default/NavLinks.js +3 -3
  46. package/dist/client/theme-default/NavLinks.js.map +1 -1
  47. package/dist/client/theme-default/SidebarNav.d.ts +2 -2
  48. package/dist/client/theme-default/SidebarNav.d.ts.map +1 -1
  49. package/dist/client/theme-default/SidebarNav.js +3 -3
  50. package/dist/client/theme-default/SidebarNav.js.map +1 -1
  51. package/dist/client/theme-default/SocialLinks.d.ts +2 -2
  52. package/dist/client/theme-default/SocialLinks.d.ts.map +1 -1
  53. package/dist/client/theme-default/SocialLinks.js +1 -1
  54. package/dist/client/theme-default/SocialLinks.js.map +1 -1
  55. package/dist/client/theme-default/ThemeToggle.d.ts +2 -3
  56. package/dist/client/theme-default/ThemeToggle.d.ts.map +1 -1
  57. package/dist/client/theme-default/ThemeToggle.js +2 -30
  58. package/dist/client/theme-default/ThemeToggle.js.map +1 -1
  59. package/dist/client/theme-default/index.d.ts +1 -1
  60. package/dist/client/theme-default/index.d.ts.map +1 -1
  61. package/dist/client/theme-default/index.js +1 -1
  62. package/dist/client/theme-default/index.js.map +1 -1
  63. package/dist/client/theme-utils.d.ts +24 -0
  64. package/dist/client/theme-utils.d.ts.map +1 -0
  65. package/dist/client/theme-utils.js +107 -0
  66. package/dist/client/theme-utils.js.map +1 -0
  67. package/dist/client/types.d.ts +5 -5
  68. package/dist/client/types.d.ts.map +1 -1
  69. package/dist/client/usePageHead.d.ts +2 -2
  70. package/dist/client/usePageHead.d.ts.map +1 -1
  71. package/dist/client/usePageHead.js +61 -56
  72. package/dist/client/usePageHead.js.map +1 -1
  73. package/dist/client/useSiteSearch.d.ts.map +1 -1
  74. package/dist/client/useSiteSearch.js +8 -8
  75. package/dist/client/useSiteSearch.js.map +1 -1
  76. package/dist/node/build.d.ts +1 -1
  77. package/dist/node/build.d.ts.map +1 -1
  78. package/dist/node/build.js +105 -96
  79. package/dist/node/build.js.map +1 -1
  80. package/dist/node/buildCache.d.ts.map +1 -1
  81. package/dist/node/buildCache.js +7 -7
  82. package/dist/node/buildCache.js.map +1 -1
  83. package/dist/node/check.d.ts +1 -1
  84. package/dist/node/check.d.ts.map +1 -1
  85. package/dist/node/check.js +52 -52
  86. package/dist/node/check.js.map +1 -1
  87. package/dist/node/cli.js +61 -64
  88. package/dist/node/cli.js.map +1 -1
  89. package/dist/node/config-helpers.d.ts +4 -4
  90. package/dist/node/config-helpers.d.ts.map +1 -1
  91. package/dist/node/config-helpers.js +1 -1
  92. package/dist/node/config-helpers.js.map +1 -1
  93. package/dist/node/config.d.ts +4 -4
  94. package/dist/node/config.d.ts.map +1 -1
  95. package/dist/node/config.js +37 -40
  96. package/dist/node/config.js.map +1 -1
  97. package/dist/node/content.d.ts +4 -4
  98. package/dist/node/content.d.ts.map +1 -1
  99. package/dist/node/content.js +28 -28
  100. package/dist/node/content.js.map +1 -1
  101. package/dist/node/createContentLoader.d.ts +1 -1
  102. package/dist/node/createContentLoader.d.ts.map +1 -1
  103. package/dist/node/createContentLoader.js +3 -3
  104. package/dist/node/createContentLoader.js.map +1 -1
  105. package/dist/node/devCss.d.ts +1 -1
  106. package/dist/node/devCss.d.ts.map +1 -1
  107. package/dist/node/devCss.js +5 -6
  108. package/dist/node/devCss.js.map +1 -1
  109. package/dist/node/devSsr.d.ts +3 -3
  110. package/dist/node/devSsr.d.ts.map +1 -1
  111. package/dist/node/devSsr.js +32 -32
  112. package/dist/node/devSsr.js.map +1 -1
  113. package/dist/node/dynamicRoutes.d.ts +2 -2
  114. package/dist/node/dynamicRoutes.d.ts.map +1 -1
  115. package/dist/node/dynamicRoutes.js +24 -24
  116. package/dist/node/dynamicRoutes.js.map +1 -1
  117. package/dist/node/favicon.d.ts +2 -2
  118. package/dist/node/favicon.d.ts.map +1 -1
  119. package/dist/node/favicon.js +26 -24
  120. package/dist/node/favicon.js.map +1 -1
  121. package/dist/node/feed.d.ts +2 -2
  122. package/dist/node/feed.d.ts.map +1 -1
  123. package/dist/node/feed.js +18 -16
  124. package/dist/node/feed.js.map +1 -1
  125. package/dist/node/hooks.d.ts +2 -2
  126. package/dist/node/hooks.d.ts.map +1 -1
  127. package/dist/node/hooks.js +1 -1
  128. package/dist/node/hooks.js.map +1 -1
  129. package/dist/node/html.d.ts +8 -8
  130. package/dist/node/html.d.ts.map +1 -1
  131. package/dist/node/html.js +75 -64
  132. package/dist/node/html.js.map +1 -1
  133. package/dist/node/index.d.ts +11 -11
  134. package/dist/node/index.d.ts.map +1 -1
  135. package/dist/node/index.js +8 -8
  136. package/dist/node/index.js.map +1 -1
  137. package/dist/node/init.d.ts +2 -0
  138. package/dist/node/init.d.ts.map +1 -1
  139. package/dist/node/init.js +59 -27
  140. package/dist/node/init.js.map +1 -1
  141. package/dist/node/lastUpdated.d.ts +2 -2
  142. package/dist/node/lastUpdated.d.ts.map +1 -1
  143. package/dist/node/lastUpdated.js +7 -4
  144. package/dist/node/lastUpdated.js.map +1 -1
  145. package/dist/node/loadSiteModule.js +2 -2
  146. package/dist/node/loadSiteModule.js.map +1 -1
  147. package/dist/node/markdown.d.ts +2 -2
  148. package/dist/node/markdown.d.ts.map +1 -1
  149. package/dist/node/markdown.js +110 -110
  150. package/dist/node/markdown.js.map +1 -1
  151. package/dist/node/markdownHeadings.d.ts +1 -1
  152. package/dist/node/markdownHeadings.d.ts.map +1 -1
  153. package/dist/node/markdownHeadings.js +11 -11
  154. package/dist/node/markdownHeadings.js.map +1 -1
  155. package/dist/node/markdownInclude.d.ts.map +1 -1
  156. package/dist/node/markdownInclude.js +11 -11
  157. package/dist/node/markdownInclude.js.map +1 -1
  158. package/dist/node/markdownSnippets.d.ts.map +1 -1
  159. package/dist/node/markdownSnippets.js +34 -34
  160. package/dist/node/markdownSnippets.js.map +1 -1
  161. package/dist/node/mdx.d.ts +1 -1
  162. package/dist/node/mdx.d.ts.map +1 -1
  163. package/dist/node/mdx.js +4 -4
  164. package/dist/node/mdx.js.map +1 -1
  165. package/dist/node/packageRoot.d.ts.map +1 -1
  166. package/dist/node/packageRoot.js +4 -4
  167. package/dist/node/packageRoot.js.map +1 -1
  168. package/dist/node/pageDataLoaders.d.ts +2 -2
  169. package/dist/node/pageDataLoaders.d.ts.map +1 -1
  170. package/dist/node/pageDataLoaders.js +24 -20
  171. package/dist/node/pageDataLoaders.js.map +1 -1
  172. package/dist/node/paths.d.ts.map +1 -1
  173. package/dist/node/paths.js +4 -4
  174. package/dist/node/paths.js.map +1 -1
  175. package/dist/node/plugin.d.ts +3 -3
  176. package/dist/node/plugin.d.ts.map +1 -1
  177. package/dist/node/plugin.js +66 -66
  178. package/dist/node/plugin.js.map +1 -1
  179. package/dist/node/resolveDeps.js +10 -10
  180. package/dist/node/resolveDeps.js.map +1 -1
  181. package/dist/node/serve.d.ts.map +1 -1
  182. package/dist/node/serve.js +13 -15
  183. package/dist/node/serve.js.map +1 -1
  184. package/dist/node/server.d.ts +3 -3
  185. package/dist/node/server.d.ts.map +1 -1
  186. package/dist/node/server.js +28 -25
  187. package/dist/node/server.js.map +1 -1
  188. package/dist/node/siteConfig.d.ts +12 -12
  189. package/dist/node/siteConfig.d.ts.map +1 -1
  190. package/dist/node/tagIndex.d.ts +5 -5
  191. package/dist/node/tagIndex.d.ts.map +1 -1
  192. package/dist/node/tagIndex.js +10 -10
  193. package/dist/node/tagIndex.js.map +1 -1
  194. package/dist/shared/contentChunk.d.ts.map +1 -1
  195. package/dist/shared/contentChunk.js +6 -6
  196. package/dist/shared/contentChunk.js.map +1 -1
  197. package/dist/shared/contentSchema.d.ts.map +1 -1
  198. package/dist/shared/contentSchema.js +11 -11
  199. package/dist/shared/contentSchema.js.map +1 -1
  200. package/dist/shared/deadLinks.d.ts.map +1 -1
  201. package/dist/shared/deadLinks.js +6 -6
  202. package/dist/shared/deadLinks.js.map +1 -1
  203. package/dist/shared/escapeHtml.js +4 -4
  204. package/dist/shared/escapeHtml.js.map +1 -1
  205. package/dist/shared/index.d.ts +14 -14
  206. package/dist/shared/index.d.ts.map +1 -1
  207. package/dist/shared/index.js +14 -14
  208. package/dist/shared/index.js.map +1 -1
  209. package/dist/shared/locale.d.ts +1 -1
  210. package/dist/shared/locale.d.ts.map +1 -1
  211. package/dist/shared/locale.js +10 -10
  212. package/dist/shared/locale.js.map +1 -1
  213. package/dist/shared/pageChrome.d.ts +4 -4
  214. package/dist/shared/pageChrome.d.ts.map +1 -1
  215. package/dist/shared/pageChrome.js +21 -21
  216. package/dist/shared/pageChrome.js.map +1 -1
  217. package/dist/shared/pageHead.d.ts +1 -1
  218. package/dist/shared/pageHead.d.ts.map +1 -1
  219. package/dist/shared/pageHead.js +4 -4
  220. package/dist/shared/pageHead.js.map +1 -1
  221. package/dist/shared/pageMeta.d.ts +5 -5
  222. package/dist/shared/pageMeta.d.ts.map +1 -1
  223. package/dist/shared/pageMeta.js +15 -17
  224. package/dist/shared/pageMeta.js.map +1 -1
  225. package/dist/shared/rewrites.d.ts +1 -1
  226. package/dist/shared/rewrites.d.ts.map +1 -1
  227. package/dist/shared/rewrites.js +2 -2
  228. package/dist/shared/rewrites.js.map +1 -1
  229. package/dist/shared/route.js +5 -5
  230. package/dist/shared/route.js.map +1 -1
  231. package/dist/shared/search.d.ts +3 -3
  232. package/dist/shared/search.d.ts.map +1 -1
  233. package/dist/shared/search.js +14 -14
  234. package/dist/shared/search.js.map +1 -1
  235. package/dist/shared/sidebar.d.ts +1 -1
  236. package/dist/shared/sidebar.d.ts.map +1 -1
  237. package/dist/shared/sidebar.js +4 -4
  238. package/dist/shared/sidebar.js.map +1 -1
  239. package/dist/shared/slug.d.ts +1 -1
  240. package/dist/shared/slug.d.ts.map +1 -1
  241. package/dist/shared/slug.js +5 -5
  242. package/dist/shared/slug.js.map +1 -1
  243. package/dist/shared/socialIcons.d.ts.map +1 -1
  244. package/dist/shared/socialIcons.js +4 -4
  245. package/dist/shared/socialIcons.js.map +1 -1
  246. package/dist/shared/tags.js +8 -8
  247. package/dist/shared/tags.js.map +1 -1
  248. package/dist/shared/theme.d.ts +1 -1
  249. package/dist/shared/theme.d.ts.map +1 -1
  250. package/dist/shared/theme.js +16 -10
  251. package/dist/shared/theme.js.map +1 -1
  252. package/dist/shared/themeLabels.d.ts +1 -1
  253. package/dist/shared/themeLabels.d.ts.map +1 -1
  254. package/dist/shared/themeLabels.js +26 -26
  255. package/dist/shared/themeLabels.js.map +1 -1
  256. package/dist/shared/url.d.ts.map +1 -1
  257. package/dist/shared/url.js +3 -3
  258. package/dist/shared/url.js.map +1 -1
  259. package/package.json +33 -9
  260. package/src/client/app.tsx +89 -92
  261. package/src/client/entry-client.tsx +17 -19
  262. package/src/client/entry-ssr.tsx +33 -33
  263. package/src/client/index.ts +16 -2
  264. package/src/client/loadPage.ts +37 -38
  265. package/src/client/prefetchLinks.ts +30 -30
  266. package/src/client/theme-default/AlgoliaSearch.tsx +46 -46
  267. package/src/client/theme-default/Features.tsx +27 -21
  268. package/src/client/theme-default/Hero.tsx +22 -18
  269. package/src/client/theme-default/Layout.tsx +189 -244
  270. package/src/client/theme-default/Logo.tsx +30 -40
  271. package/src/client/theme-default/NavLinks.tsx +21 -21
  272. package/src/client/theme-default/SidebarNav.tsx +29 -29
  273. package/src/client/theme-default/SocialLinks.tsx +11 -11
  274. package/src/client/theme-default/ThemeToggle.tsx +2 -78
  275. package/src/client/theme-default/index.ts +1 -1
  276. package/src/client/theme-default/styles.css +30 -21
  277. package/src/client/theme-utils.tsx +184 -0
  278. package/src/client/types.ts +30 -24
  279. package/src/client/usePageHead.ts +128 -128
  280. package/src/client/useSiteSearch.ts +34 -34
  281. package/src/client/virtual.d.ts +76 -76
  282. package/src/shared/contentChunk.ts +6 -6
  283. package/src/shared/contentSchema.ts +52 -49
  284. package/src/shared/deadLinks.ts +16 -16
  285. package/src/shared/escapeHtml.ts +5 -5
  286. package/src/shared/index.ts +21 -25
  287. package/src/shared/locale.ts +46 -46
  288. package/src/shared/pageChrome.ts +123 -123
  289. package/src/shared/pageHead.ts +16 -16
  290. package/src/shared/pageMeta.ts +79 -79
  291. package/src/shared/rewrites.ts +14 -16
  292. package/src/shared/route.ts +7 -7
  293. package/src/shared/search.ts +52 -52
  294. package/src/shared/sidebar.ts +28 -28
  295. package/src/shared/slug.ts +13 -13
  296. package/src/shared/socialIcons.ts +12 -14
  297. package/src/shared/tags.ts +20 -20
  298. package/src/shared/theme.ts +22 -13
  299. package/src/shared/themeLabels.ts +45 -45
  300. package/src/shared/url.ts +6 -10
  301. package/templates/default/.preactpress/config.ts +17 -17
  302. package/templates/default/README.md +16 -16
  303. package/templates/default/guide/first-five-minutes.md +21 -21
  304. package/templates/default/index.html +1 -1
  305. package/templates/default/index.md +9 -9
  306. package/templates/default/package.json +1 -1
  307. package/templates/default/pnpm-lock.yaml +5 -5
  308. package/templates/docs/.preactpress/config.ts +76 -56
  309. package/templates/docs/README.md +6 -6
  310. package/templates/docs/components/BenefitsGrid.tsx +45 -0
  311. package/templates/docs/components/CliBlock.tsx +38 -0
  312. package/templates/docs/components/ComparisonTable.tsx +60 -0
  313. package/templates/docs/components/CopyableCommand.tsx +86 -0
  314. package/templates/docs/components/Counter.tsx +7 -5
  315. package/templates/docs/components/MarketingHero.tsx +63 -0
  316. package/templates/docs/components/MdxDemo.tsx +96 -0
  317. package/templates/docs/components/References.tsx +62 -0
  318. package/templates/docs/components/TemplateGallery.tsx +46 -0
  319. package/templates/docs/components/marketing.css +992 -0
  320. package/templates/docs/examples/algolia-docsearch.md +33 -0
  321. package/templates/docs/examples/content-loader.data.ts +11 -0
  322. package/templates/docs/examples/content-loader.md +29 -0
  323. package/templates/docs/examples/dynamic-routes.md +16 -0
  324. package/templates/docs/examples/static-assets.md +13 -0
  325. package/templates/docs/guide/advanced.md +4 -4
  326. package/templates/docs/guide/commands.md +10 -10
  327. package/templates/docs/guide/configuration.md +43 -43
  328. package/templates/docs/guide/creating-pages.md +60 -39
  329. package/templates/docs/guide/custom-themes.md +9 -9
  330. package/templates/docs/guide/deploy.md +29 -29
  331. package/templates/docs/guide/first-five-minutes.md +22 -22
  332. package/templates/docs/guide/getting-started.md +29 -31
  333. package/templates/docs/guide/markdown-and-mdx.md +1 -1
  334. package/templates/docs/guide/routing.md +40 -40
  335. package/templates/docs/guide/what-is-preactpress.md +18 -18
  336. package/templates/docs/index.html +1 -1
  337. package/templates/docs/index.mdx +25 -0
  338. package/templates/docs/interactive.mdx +1 -1
  339. package/templates/docs/markdown-examples.md +73 -21
  340. package/templates/docs/package.json +1 -1
  341. package/templates/docs/packages/[pkg].md +15 -0
  342. package/templates/docs/packages/[pkg].paths.ts +20 -0
  343. package/templates/docs/parts/include-body.md +1 -0
  344. package/templates/docs/pnpm-lock.yaml +5 -5
  345. package/templates/docs/public/preactpress-example.txt +1 -0
  346. package/templates/docs/snippets/greet.ts +1 -1
  347. package/templates/hono/.preactpress/config.ts +65 -65
  348. package/templates/hono/.preactpress/theme/CodeSnippet.tsx +15 -15
  349. package/templates/hono/.preactpress/theme/FeatureGrid.tsx +7 -7
  350. package/templates/hono/.preactpress/theme/Hero.tsx +13 -13
  351. package/templates/hono/.preactpress/theme/Layout.tsx +122 -164
  352. package/templates/hono/.preactpress/theme/Logo.tsx +6 -6
  353. package/templates/hono/.preactpress/theme/ThemeToggle.tsx +3 -70
  354. package/templates/hono/.preactpress/theme/hono.css +31 -14
  355. package/templates/hono/README.md +17 -15
  356. package/templates/hono/components/Counter.tsx +7 -5
  357. package/templates/hono/de/guide/configuration.md +18 -20
  358. package/templates/hono/de/guide/deploy.md +29 -29
  359. package/templates/hono/de/guide/first-five-minutes.md +21 -21
  360. package/templates/hono/de/guide/getting-started.md +29 -29
  361. package/templates/hono/de/guide/routing.md +26 -25
  362. package/templates/hono/de/guide/seiten-erstellen.md +39 -39
  363. package/templates/hono/de/guide/what-is-preactpress.md +18 -18
  364. package/templates/hono/de/index.mdx +20 -17
  365. package/templates/hono/de/interactive.mdx +1 -1
  366. package/templates/hono/de/markdown-examples.md +6 -6
  367. package/templates/hono/de/parts/include-body.md +1 -0
  368. package/templates/hono/de/snippets/greet.ts +1 -1
  369. package/templates/hono/guide/configuration.md +25 -25
  370. package/templates/hono/guide/creating-pages.md +39 -39
  371. package/templates/hono/guide/deploy.md +29 -29
  372. package/templates/hono/guide/first-five-minutes.md +21 -21
  373. package/templates/hono/guide/getting-started.md +29 -29
  374. package/templates/hono/guide/routing.md +40 -40
  375. package/templates/hono/guide/what-is-preactpress.md +18 -18
  376. package/templates/hono/index.html +1 -1
  377. package/templates/hono/index.mdx +21 -17
  378. package/templates/hono/interactive.mdx +1 -1
  379. package/templates/hono/markdown-examples.md +6 -6
  380. package/templates/hono/package.json +1 -1
  381. package/templates/hono/parts/include-body.md +1 -0
  382. package/templates/hono/pnpm-lock.yaml +5 -5
  383. package/templates/hono/snippets/greet.ts +1 -1
  384. package/templates/magazine/.preactpress/config.ts +19 -19
  385. package/templates/magazine/.preactpress/theme/Layout.tsx +69 -172
  386. package/templates/magazine/.preactpress/theme/TeaserGrid.tsx +14 -14
  387. package/templates/magazine/.preactpress/theme/ThemeToggle.tsx +4 -70
  388. package/templates/magazine/.preactpress/theme/magazine.css +13 -8
  389. package/templates/magazine/README.md +30 -0
  390. package/templates/magazine/article-markets.md +2 -2
  391. package/templates/magazine/article-tech.mdx +10 -10
  392. package/templates/magazine/index.data.ts +9 -9
  393. package/templates/magazine/index.html +5 -1
  394. package/templates/magazine/index.mdx +1 -1
  395. package/templates/magazine/package.json +1 -1
  396. package/templates/magazine/pnpm-lock.yaml +2917 -0
  397. package/templates/docs/about.md +0 -10
  398. package/templates/docs/dist/404.html +0 -29
  399. package/templates/docs/dist/about/index.html +0 -32
  400. package/templates/docs/dist/assets/esm-DzlBxN5p.js +0 -110
  401. package/templates/docs/dist/assets/interactive-64o6YwrR.js +0 -9
  402. package/templates/docs/dist/assets/interactive-BedCloEw.js +0 -9
  403. package/templates/docs/dist/assets/main-BVLeh8GO.js +0 -1
  404. package/templates/docs/dist/assets/main-CreUBb3N.js +0 -1
  405. package/templates/docs/dist/assets/main-oodK-zZy.css +0 -2
  406. package/templates/docs/dist/de/guide/getting-started/index.html +0 -36
  407. package/templates/docs/dist/de/guide/what-is-preactpress/index.html +0 -38
  408. package/templates/docs/dist/de/index.html +0 -29
  409. package/templates/docs/dist/favicon-32.png +0 -0
  410. package/templates/docs/dist/favicon.png +0 -0
  411. package/templates/docs/dist/favicon.svg +0 -28
  412. package/templates/docs/dist/guide/advanced/index.html +0 -53
  413. package/templates/docs/dist/guide/commands/index.html +0 -89
  414. package/templates/docs/dist/guide/configuration/index.html +0 -196
  415. package/templates/docs/dist/guide/creating-pages/index.html +0 -234
  416. package/templates/docs/dist/guide/custom-themes/index.html +0 -52
  417. package/templates/docs/dist/guide/default-theme/index.html +0 -53
  418. package/templates/docs/dist/guide/deploy/index.html +0 -195
  419. package/templates/docs/dist/guide/first-five-minutes/index.html +0 -99
  420. package/templates/docs/dist/guide/getting-started/index.html +0 -173
  421. package/templates/docs/dist/guide/markdown-and-mdx/index.html +0 -59
  422. package/templates/docs/dist/guide/routing/index.html +0 -192
  423. package/templates/docs/dist/guide/what-is-preactpress/index.html +0 -141
  424. package/templates/docs/dist/index.html +0 -30
  425. package/templates/docs/dist/interactive/index.html +0 -37
  426. package/templates/docs/dist/markdown-examples/index.html +0 -231
  427. package/templates/docs/dist/preactpress-content/404.json +0 -8
  428. package/templates/docs/dist/preactpress-content/_index.json +0 -50
  429. package/templates/docs/dist/preactpress-content/about.json +0 -15
  430. package/templates/docs/dist/preactpress-content/de.json +0 -45
  431. package/templates/docs/dist/preactpress-content/de__guide__getting-started.json +0 -26
  432. package/templates/docs/dist/preactpress-content/de__guide__what-is-preactpress.json +0 -21
  433. package/templates/docs/dist/preactpress-content/guide__advanced.json +0 -46
  434. package/templates/docs/dist/preactpress-content/guide__commands.json +0 -26
  435. package/templates/docs/dist/preactpress-content/guide__configuration.json +0 -51
  436. package/templates/docs/dist/preactpress-content/guide__creating-pages.json +0 -71
  437. package/templates/docs/dist/preactpress-content/guide__custom-themes.json +0 -15
  438. package/templates/docs/dist/preactpress-content/guide__default-theme.json +0 -36
  439. package/templates/docs/dist/preactpress-content/guide__deploy.json +0 -56
  440. package/templates/docs/dist/preactpress-content/guide__first-five-minutes.json +0 -36
  441. package/templates/docs/dist/preactpress-content/guide__getting-started.json +0 -51
  442. package/templates/docs/dist/preactpress-content/guide__markdown-and-mdx.json +0 -31
  443. package/templates/docs/dist/preactpress-content/guide__routing.json +0 -71
  444. package/templates/docs/dist/preactpress-content/guide__what-is-preactpress.json +0 -51
  445. package/templates/docs/dist/preactpress-content/markdown-examples.json +0 -71
  446. package/templates/docs/dist/preactpress-content/tags__markdown.json +0 -16
  447. package/templates/docs/dist/preactpress-search.json +0 -166
  448. package/templates/docs/dist/preactpress-theme.js +0 -1
  449. package/templates/docs/dist/tags/markdown/index.html +0 -32
  450. package/templates/docs/index.md +0 -28
  451. package/templates/hono/dist/404.html +0 -29
  452. package/templates/hono/dist/README/index.html +0 -104
  453. package/templates/hono/dist/about/index.html +0 -32
  454. package/templates/hono/dist/assets/Counter-CCEByS-J.js +0 -1
  455. package/templates/hono/dist/assets/Hero--o6WMNvm.js +0 -2
  456. package/templates/hono/dist/assets/de-D5r6Ye70.js +0 -10
  457. package/templates/hono/dist/assets/hono-BXWYYdyv.js +0 -10
  458. package/templates/hono/dist/assets/interactive-Bxo-WBpC.js +0 -9
  459. package/templates/hono/dist/assets/interactive-BznI4IQ3.js +0 -9
  460. package/templates/hono/dist/assets/main-Bqi-VFEk.js +0 -2
  461. package/templates/hono/dist/assets/main-DIIN7FO0.css +0 -1
  462. package/templates/hono/dist/de/about/index.html +0 -32
  463. package/templates/hono/dist/de/guide/commands/index.html +0 -41
  464. package/templates/hono/dist/de/guide/configuration/index.html +0 -105
  465. package/templates/hono/dist/de/guide/deploy/index.html +0 -195
  466. package/templates/hono/dist/de/guide/first-five-minutes/index.html +0 -99
  467. package/templates/hono/dist/de/guide/getting-started/index.html +0 -173
  468. package/templates/hono/dist/de/guide/routing/index.html +0 -165
  469. package/templates/hono/dist/de/guide/seiten-erstellen/index.html +0 -234
  470. package/templates/hono/dist/de/guide/what-is-preactpress/index.html +0 -141
  471. package/templates/hono/dist/de/index.html +0 -30
  472. package/templates/hono/dist/de/interactive/index.html +0 -37
  473. package/templates/hono/dist/de/markdown-examples/index.html +0 -97
  474. package/templates/hono/dist/de/parts/include-body/index.html +0 -36
  475. package/templates/hono/dist/de/tags/markdown/index.html +0 -32
  476. package/templates/hono/dist/favicon-32.png +0 -0
  477. package/templates/hono/dist/favicon.png +0 -0
  478. package/templates/hono/dist/favicon.svg +0 -28
  479. package/templates/hono/dist/guide/commands/index.html +0 -41
  480. package/templates/hono/dist/guide/configuration/index.html +0 -158
  481. package/templates/hono/dist/guide/creating-pages/index.html +0 -234
  482. package/templates/hono/dist/guide/deploy/index.html +0 -195
  483. package/templates/hono/dist/guide/first-five-minutes/index.html +0 -99
  484. package/templates/hono/dist/guide/getting-started/index.html +0 -173
  485. package/templates/hono/dist/guide/routing/index.html +0 -165
  486. package/templates/hono/dist/guide/what-is-preactpress/index.html +0 -141
  487. package/templates/hono/dist/index.html +0 -30
  488. package/templates/hono/dist/interactive/index.html +0 -37
  489. package/templates/hono/dist/markdown-examples/index.html +0 -105
  490. package/templates/hono/dist/partials/shared-note/index.html +0 -30
  491. package/templates/hono/dist/parts/include-body/index.html +0 -36
  492. package/templates/hono/dist/preactpress-content/404.json +0 -8
  493. package/templates/hono/dist/preactpress-content/README.json +0 -26
  494. package/templates/hono/dist/preactpress-content/about.json +0 -15
  495. package/templates/hono/dist/preactpress-content/de__about.json +0 -15
  496. package/templates/hono/dist/preactpress-content/de__guide__commands.json +0 -36
  497. package/templates/hono/dist/preactpress-content/de__guide__configuration.json +0 -41
  498. package/templates/hono/dist/preactpress-content/de__guide__deploy.json +0 -56
  499. package/templates/hono/dist/preactpress-content/de__guide__first-five-minutes.json +0 -36
  500. package/templates/hono/dist/preactpress-content/de__guide__getting-started.json +0 -51
  501. package/templates/hono/dist/preactpress-content/de__guide__routing.json +0 -61
  502. package/templates/hono/dist/preactpress-content/de__guide__seiten-erstellen.json +0 -71
  503. package/templates/hono/dist/preactpress-content/de__guide__what-is-preactpress.json +0 -51
  504. package/templates/hono/dist/preactpress-content/de__markdown-examples.json +0 -131
  505. package/templates/hono/dist/preactpress-content/de__parts__include-body.json +0 -16
  506. package/templates/hono/dist/preactpress-content/de__tags__markdown.json +0 -16
  507. package/templates/hono/dist/preactpress-content/guide__commands.json +0 -36
  508. package/templates/hono/dist/preactpress-content/guide__configuration.json +0 -51
  509. package/templates/hono/dist/preactpress-content/guide__creating-pages.json +0 -71
  510. package/templates/hono/dist/preactpress-content/guide__deploy.json +0 -56
  511. package/templates/hono/dist/preactpress-content/guide__first-five-minutes.json +0 -36
  512. package/templates/hono/dist/preactpress-content/guide__getting-started.json +0 -51
  513. package/templates/hono/dist/preactpress-content/guide__routing.json +0 -61
  514. package/templates/hono/dist/preactpress-content/guide__what-is-preactpress.json +0 -51
  515. package/templates/hono/dist/preactpress-content/markdown-examples.json +0 -141
  516. package/templates/hono/dist/preactpress-content/partials__shared-note.json +0 -10
  517. package/templates/hono/dist/preactpress-content/parts__include-body.json +0 -16
  518. package/templates/hono/dist/preactpress-content/tags__markdown.json +0 -16
  519. package/templates/hono/dist/preactpress-search.json +0 -242
  520. package/templates/hono/dist/preactpress-theme.js +0 -1
  521. package/templates/hono/dist/tags/markdown/index.html +0 -32
@@ -1,173 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Getting Started | Hono Starter</title>
7
- <script src="/preactpress-theme.js"></script>
8
- <meta name="description" content="Install PreactPress and start a new documentation site">
9
- <meta property="og:title" content="Getting Started | Hono Starter">
10
- <meta property="og:description" content="Install PreactPress and start a new documentation site">
11
- <meta property="og:type" content="website">
12
- <meta property="og:url" content="/guide/getting-started/">
13
- <meta name="twitter:card" content="summary">
14
- <meta name="twitter:title" content="Getting Started | Hono Starter">
15
- <meta name="twitter:description" content="Install PreactPress and start a new documentation site">
16
- <link rel="canonical" href="/guide/getting-started/">
17
- <script type="application/ld+json">{"@context":"https://schema.org","@type":"WebPage","headline":"Getting Started | Hono Starter","name":"Getting Started | Hono Starter","description":"Install PreactPress and start a new documentation site","url":"/guide/getting-started/","dateModified":"2026-06-04T07:28:10.777Z"}</script>
18
- <link rel="icon" href="/favicon.svg" type="image/svg+xml">
19
- <link rel="icon" href="/favicon-32.png" type="image/png" sizes="32x32">
20
- <link rel="icon" href="/favicon.png" type="image/png" sizes="any">
21
- <link rel="apple-touch-icon" href="/favicon.png">
22
- <link rel="stylesheet" crossorigin href="/assets/main-DIIN7FO0.css">
23
- </head>
24
- <body>
25
- <template id="__PREACTPRESS_PAGE_DATA__">{&quot;kind&quot;:&quot;markdown&quot;,&quot;meta&quot;:{&quot;title&quot;:&quot;Getting Started&quot;,&quot;description&quot;:&quot;Install PreactPress and start a new documentation site&quot;},&quot;html&quot;:&quot;\u003ch1 id=\&quot;getting-started\&quot; class=\&quot;pp-heading\&quot;&gt;Getting Started\u003ca class=\&quot;pp-heading-anchor\&quot; href=\&quot;#getting-started\&quot; aria-label=\&quot;Link to this section\&quot;&gt;#\u003c/a&gt;\u003c/h1&gt;\n\u003cp&gt;This guide shows how to create a PreactPress site, understand the generated files, and start the development server.\u003c/p&gt;\n\u003ch2 id=\&quot;prerequisites\&quot; class=\&quot;pp-heading\&quot;&gt;Prerequisites\u003ca class=\&quot;pp-heading-anchor\&quot; href=\&quot;#prerequisites\&quot; aria-label=\&quot;Link to this section\&quot;&gt;#\u003c/a&gt;\u003c/h2&gt;\n\u003cp&gt;You need:\u003c/p&gt;\n\u003ctable&gt;\n\u003cthead&gt;\n\u003ctr&gt;\n\u003cth&gt;Requirement\u003c/th&gt;\n\u003cth&gt;Version\u003c/th&gt;\n\u003c/tr&gt;\n\u003c/thead&gt;\n\u003ctbody&gt;\n\u003ctr&gt;\n\u003ctd&gt;Node.js\u003c/td&gt;\n\u003ctd&gt;20 or higher\u003c/td&gt;\n\u003c/tr&gt;\n\u003ctr&gt;\n\u003ctd&gt;Package manager\u003c/td&gt;\n\u003ctd&gt;pnpm recommended; npm, yarn, and bun also work\u003c/td&gt;\n\u003c/tr&gt;\n\u003ctr&gt;\n\u003ctd&gt;Editor\u003c/td&gt;\n\u003ctd&gt;Any editor with Markdown and TypeScript support\u003c/td&gt;\n\u003c/tr&gt;\n\u003c/tbody&gt;\n\u003c/table&gt;\n\u003ch2 id=\&quot;create-a-site\&quot; class=\&quot;pp-heading\&quot;&gt;Create a site\u003ca class=\&quot;pp-heading-anchor\&quot; href=\&quot;#create-a-site\&quot; aria-label=\&quot;Link to this section\&quot;&gt;#\u003c/a&gt;\u003c/h2&gt;\n\u003cp&gt;Start in an empty directory:\u003c/p&gt;\n\u003cpre class=\&quot;shiki shiki-themes github-light github-dark\&quot; style=\&quot;background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8\&quot; tabindex=\&quot;0\&quot;&gt;\u003ccode&gt;\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#6F42C1;--shiki-dark:#B392F0\&quot;&gt;mkdir\u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt; my-site\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#005CC5;--shiki-dark:#79B8FF\&quot;&gt;cd\u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt; my-site\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#6F42C1;--shiki-dark:#B392F0\&quot;&gt;pnpm\u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt; dlx\u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt; preactpress\u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt; init\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#6F42C1;--shiki-dark:#B392F0\&quot;&gt;pnpm\u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt; install\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#6F42C1;--shiki-dark:#B392F0\&quot;&gt;pnpm\u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt; run\u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt; dev\u003c/span&gt;\u003c/span&gt;\u003c/code&gt;\u003c/pre&gt;\u003cp&gt;With npm:\u003c/p&gt;\n\u003cpre class=\&quot;shiki shiki-themes github-light github-dark\&quot; style=\&quot;background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8\&quot; tabindex=\&quot;0\&quot;&gt;\u003ccode&gt;\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#6F42C1;--shiki-dark:#B392F0\&quot;&gt;mkdir\u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt; my-site\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#005CC5;--shiki-dark:#79B8FF\&quot;&gt;cd\u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt; my-site\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#6F42C1;--shiki-dark:#B392F0\&quot;&gt;npx\u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt; preactpress\u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt; init\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#6F42C1;--shiki-dark:#B392F0\&quot;&gt;npm\u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt; install\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#6F42C1;--shiki-dark:#B392F0\&quot;&gt;npm\u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt; run\u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt; dev\u003c/span&gt;\u003c/span&gt;\u003c/code&gt;\u003c/pre&gt;\u003cp&gt;Open \u003cstrong&gt;\u003ca href=\&quot;http://localhost:5173\&quot; target=\&quot;_blank\&quot; rel=\&quot;noopener noreferrer\&quot;&gt;http://localhost:5173\u003c/a&gt;\u003c/strong&gt; to see the starter site.\u003c/p&gt;\n\u003cblockquote&gt;\n\u003cp&gt;\u003cstrong&gt;Note\u003c/strong&gt;\n\u003ccode&gt;preactpress init\u003c/code&gt; copies the built-in starter template and writes \u003ccode&gt;preactpress\u003c/code&gt; to \u003ccode&gt;devDependencies\u003c/code&gt;. You do not need to install PreactPress separately before running the initializer.\u003c/p&gt;\n\u003c/blockquote&gt;\n\u003ch2 id=\&quot;file-structure\&quot; class=\&quot;pp-heading\&quot;&gt;File structure\u003ca class=\&quot;pp-heading-anchor\&quot; href=\&quot;#file-structure\&quot; aria-label=\&quot;Link to this section\&quot;&gt;#\u003c/a&gt;\u003c/h2&gt;\n\u003cp&gt;After initialization, the project looks like this:\u003c/p&gt;\n\u003cpre class=\&quot;shiki shiki-themes github-light github-dark\&quot; style=\&quot;background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8\&quot; tabindex=\&quot;0\&quot;&gt;\u003ccode&gt;\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;my-site/\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;├── README.md\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;├── index.html\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;├── index.md\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;├── about.md\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;├── guide/\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;│ └── first-five-minutes.md\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;├── markdown-examples.md\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;├── interactive.mdx\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;├── components/\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;│ └── Counter.tsx\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;└── .preactpress/\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt; └── config.ts\u003c/span&gt;\u003c/span&gt;\u003c/code&gt;\u003c/pre&gt;\u003cp&gt;The \u003ccode&gt;.preactpress\u003c/code&gt; directory contains site configuration. Markdown and MDX files outside \u003ccode&gt;.preactpress\u003c/code&gt; are source files and become routes.\u003c/p&gt;\n\u003ch2 id=\&quot;the-config-file\&quot; class=\&quot;pp-heading\&quot;&gt;The config file\u003ca class=\&quot;pp-heading-anchor\&quot; href=\&quot;#the-config-file\&quot; aria-label=\&quot;Link to this section\&quot;&gt;#\u003c/a&gt;\u003c/h2&gt;\n\u003cp&gt;The starter config lives at \u003ccode&gt;.preactpress/config.ts\u003c/code&gt;:\u003c/p&gt;\n\u003cpre class=\&quot;shiki shiki-themes github-light github-dark\&quot; style=\&quot;background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8\&quot; tabindex=\&quot;0\&quot;&gt;\u003ccode&gt;\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#D73A49;--shiki-dark:#F97583\&quot;&gt;export\u003c/span&gt;\u003cspan style=\&quot;color:#D73A49;--shiki-dark:#F97583\&quot;&gt; default\u003c/span&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; {\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; site: {\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; title: \u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt;'My Docs'\u003c/span&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt;,\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; description: \u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt;'Short summary for search and social previews'\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; },\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; themeConfig: {\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; nav: [\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; { text: \u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt;'Home'\u003c/span&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt;, link: \u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt;'/'\u003c/span&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; },\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; { text: \u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt;'Guide'\u003c/span&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt;, link: \u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt;'/guide/what-is-preactpress'\u003c/span&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; }\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; ],\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; sidebar: [\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; {\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; text: \u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt;'Introduction'\u003c/span&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt;,\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; items: [\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; { text: \u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt;'What is PreactPress?'\u003c/span&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt;, link: \u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt;'/guide/what-is-preactpress'\u003c/span&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; },\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; { text: \u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt;'Getting Started'\u003c/span&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt;, link: \u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt;'/guide/getting-started'\u003c/span&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; }\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; ]\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; }\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; ]\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; }\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt;}\u003c/span&gt;\u003c/span&gt;\u003c/code&gt;\u003c/pre&gt;\u003cp&gt;Use \u003ccode&gt;site\u003c/code&gt; for site-wide metadata and \u003ccode&gt;themeConfig\u003c/code&gt; for default-theme options such as logo (\u003ccode&gt;logo: '/logo.svg'\u003c/code&gt;), nav, sidebar, search, outline, footer, and edit links.\u003c/p&gt;\n\u003ch2 id=\&quot;source-files\&quot; class=\&quot;pp-heading\&quot;&gt;Source files\u003ca class=\&quot;pp-heading-anchor\&quot; href=\&quot;#source-files\&quot; aria-label=\&quot;Link to this section\&quot;&gt;#\u003c/a&gt;\u003c/h2&gt;\n\u003cp&gt;PreactPress uses file-based routing. By default, the source directory is the project root:\u003c/p&gt;\n\u003cpre class=\&quot;shiki shiki-themes github-light github-dark\&quot; style=\&quot;background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8\&quot; tabindex=\&quot;0\&quot;&gt;\u003ccode&gt;\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;index.md -&gt; /\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;about.md -&gt; /about\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;guide/getting-started.md -&gt; /guide/getting-started\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;interactive.mdx -&gt; /interactive\u003c/span&gt;\u003c/span&gt;\u003c/code&gt;\u003c/pre&gt;\u003cp&gt;You can change the source directory with \u003ccode&gt;srcDir\u003c/code&gt;:\u003c/p&gt;\n\u003cpre class=\&quot;shiki shiki-themes github-light github-dark\&quot; style=\&quot;background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8\&quot; tabindex=\&quot;0\&quot;&gt;\u003ccode&gt;\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#D73A49;--shiki-dark:#F97583\&quot;&gt;export\u003c/span&gt;\u003cspan style=\&quot;color:#D73A49;--shiki-dark:#F97583\&quot;&gt; default\u003c/span&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; {\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; srcDir: \u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt;'docs'\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt;}\u003c/span&gt;\u003c/span&gt;\u003c/code&gt;\u003c/pre&gt;\u003cp&gt;With this config, PreactPress reads pages from \u003ccode&gt;docs/\u003c/code&gt; while \u003ccode&gt;.preactpress/config.ts\u003c/code&gt; still belongs to the project root.\u003c/p&gt;\n\u003ch2 id=\&quot;commands\&quot; class=\&quot;pp-heading\&quot;&gt;Commands\u003ca class=\&quot;pp-heading-anchor\&quot; href=\&quot;#commands\&quot; aria-label=\&quot;Link to this section\&quot;&gt;#\u003c/a&gt;\u003c/h2&gt;\n\u003cp&gt;The starter includes npm scripts:\u003c/p&gt;\n\u003ctable&gt;\n\u003cthead&gt;\n\u003ctr&gt;\n\u003cth&gt;Command\u003c/th&gt;\n\u003cth&gt;Purpose\u003c/th&gt;\n\u003c/tr&gt;\n\u003c/thead&gt;\n\u003ctbody&gt;\n\u003ctr&gt;\n\u003ctd&gt;\u003ccode&gt;pnpm run dev\u003c/code&gt;\u003c/td&gt;\n\u003ctd&gt;Start the dev server with SSR and hot reload\u003c/td&gt;\n\u003c/tr&gt;\n\u003ctr&gt;\n\u003ctd&gt;\u003ccode&gt;pnpm run check\u003c/code&gt;\u003c/td&gt;\n\u003ctd&gt;Validate config, routes, and links\u003c/td&gt;\n\u003c/tr&gt;\n\u003ctr&gt;\n\u003ctd&gt;\u003ccode&gt;pnpm run build\u003c/code&gt;\u003c/td&gt;\n\u003ctd&gt;Build the static production site into \u003ccode&gt;dist/\u003c/code&gt;\u003c/td&gt;\n\u003c/tr&gt;\n\u003ctr&gt;\n\u003ctd&gt;\u003ccode&gt;pnpm run preview\u003c/code&gt;\u003c/td&gt;\n\u003ctd&gt;Preview the production build locally\u003c/td&gt;\n\u003c/tr&gt;\n\u003c/tbody&gt;\n\u003c/table&gt;\n\u003cp&gt;You can also call the CLI directly:\u003c/p&gt;\n\u003cpre class=\&quot;shiki shiki-themes github-light github-dark\&quot; style=\&quot;background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8\&quot; tabindex=\&quot;0\&quot;&gt;\u003ccode&gt;\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#6F42C1;--shiki-dark:#B392F0\&quot;&gt;pnpm\u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt; exec\u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt; preactpress\u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt; dev\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#6F42C1;--shiki-dark:#B392F0\&quot;&gt;pnpm\u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt; exec\u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt; preactpress\u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt; check\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#6F42C1;--shiki-dark:#B392F0\&quot;&gt;pnpm\u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt; exec\u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt; preactpress\u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt; build\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#6F42C1;--shiki-dark:#B392F0\&quot;&gt;pnpm\u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt; exec\u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt; preactpress\u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt; preview\u003c/span&gt;\u003c/span&gt;\u003c/code&gt;\u003c/pre&gt;\u003ch2 id=\&quot;what-s-next\&quot; class=\&quot;pp-heading\&quot;&gt;What’s next?\u003ca class=\&quot;pp-heading-anchor\&quot; href=\&quot;#what-s-next\&quot; aria-label=\&quot;Link to this section\&quot;&gt;#\u003c/a&gt;\u003c/h2&gt;\n\u003ctable&gt;\n\u003cthead&gt;\n\u003ctr&gt;\n\u003cth&gt;Page\u003c/th&gt;\n\u003cth&gt;Why\u003c/th&gt;\n\u003c/tr&gt;\n\u003c/thead&gt;\n\u003ctbody&gt;\n\u003ctr&gt;\n\u003ctd&gt;\u003ca href=\&quot;/guide/first-five-minutes\&quot;&gt;Your first 5 minutes\u003c/a&gt;\u003c/td&gt;\n\u003ctd&gt;Change the title, add a page, and wire navigation\u003c/td&gt;\n\u003c/tr&gt;\n\u003ctr&gt;\n\u003ctd&gt;\u003ca href=\&quot;/guide/routing\&quot;&gt;Routing\u003c/a&gt;\u003c/td&gt;\n\u003ctd&gt;Learn how Markdown files map to URLs\u003c/td&gt;\n\u003c/tr&gt;\n\u003ctr&gt;\n\u003ctd&gt;\u003ca href=\&quot;/guide/deploy\&quot;&gt;Deploy\u003c/a&gt;\u003c/td&gt;\n\u003ctd&gt;Build and publish the generated \u003ccode&gt;dist/\u003c/code&gt; directory\u003c/td&gt;\n\u003c/tr&gt;\n\u003c/tbody&gt;\n\u003c/table&gt;\n&quot;,&quot;title&quot;:&quot;Getting Started&quot;,&quot;description&quot;:&quot;Install PreactPress and start a new documentation site&quot;,&quot;tags&quot;:[],&quot;pageType&quot;:&quot;website&quot;,&quot;headings&quot;:[{&quot;id&quot;:&quot;prerequisites&quot;,&quot;text&quot;:&quot;Prerequisites&quot;,&quot;level&quot;:2},{&quot;id&quot;:&quot;create-a-site&quot;,&quot;text&quot;:&quot;Create a site&quot;,&quot;level&quot;:2},{&quot;id&quot;:&quot;file-structure&quot;,&quot;text&quot;:&quot;File structure&quot;,&quot;level&quot;:2},{&quot;id&quot;:&quot;the-config-file&quot;,&quot;text&quot;:&quot;The config file&quot;,&quot;level&quot;:2},{&quot;id&quot;:&quot;source-files&quot;,&quot;text&quot;:&quot;Source files&quot;,&quot;level&quot;:2},{&quot;id&quot;:&quot;commands&quot;,&quot;text&quot;:&quot;Commands&quot;,&quot;level&quot;:2},{&quot;id&quot;:&quot;what-s-next&quot;,&quot;text&quot;:&quot;What's next?&quot;,&quot;level&quot;:2}],&quot;relativePath&quot;:&quot;guide/getting-started.md&quot;,&quot;lastUpdated&quot;:&quot;2026-06-04T07:28:10.777Z&quot;}</template>
26
- <div id="app"><div class="hn-site"><a class="hn-skip" href="#content">Skip to content</a><header class="hn-header"><div class="hn-header-inner"><a class="hn-brand" href="/" aria-label="Hono Starter"><span class="hn-logo" aria-label="Hono Starter"><svg aria-hidden="true" viewBox="0 0 36 36" width="36" height="36"><rect width="36" height="36" rx="11" fill="currentColor" opacity="0.12"></rect><path d="M19.8 5.5c.8 4-2.8 5.9-4.7 8.2-1.8 2.1-2.5 4.9-.3 7 0-2.8 1.7-4.6 4.2-6.7 3.2 3 5.3 5.8 5.3 9.2 0 4.4-3.3 7.3-7.6 7.3-4.8 0-8.3-3.6-8.3-8.4 0-6.1 6.3-9.2 11.4-16.6Z" fill="currentColor"></path><path d="M21.7 25.7c0 2.2-1.7 3.8-3.9 3.8s-4-1.6-4-3.8c0-1.7 1-3.1 3.4-5.2.1 1.7 1.4 2.6 2.4 3.4.8.6 2.1 1 2.1 1.8Z" fill="currentColor" opacity="0.38"></path></svg><span>Hono Starter</span></span></a><div class="hn-header-actions"><nav class="hn-nav" aria-label="Main navigation"><a class href="/guide/what-is-preactpress">Docs</a><a class href="/markdown-examples">Examples</a><a class href="/about">About</a></nav><div class="hn-social" aria-label="Social links"><a href="https://github.com/your-org/your-project" aria-label="GitHub"><span><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path fill="currentColor" d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.404 1.02.005 2.04.137 3 .404 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg></span></a></div><details class="hn-locale-switcher"><summary>English</summary><div class="hn-locale-menu"><a href="/guide/getting-started" aria-current="page" class="active">English</a><a href="/de/guide/getting-started" class>Deutsch</a></div></details><button type="button" class="hn-theme-toggle" aria-label="Toggle theme"><span class="hn-theme-toggle-moon" aria-hidden="true"><svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor"><path d="M21 14.8A8.5 8.5 0 0 1 9.2 3a7 7 0 1 0 11.8 11.8Z" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.7"></path></svg></span><span class="hn-theme-toggle-sun" aria-hidden="true"><svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor"><circle cx="12" cy="12" r="3.5" stroke-width="1.7"></circle><path d="M12 2.5v2M12 19.5v2M4.6 4.6 6 6M18 18l1.4 1.4M2.5 12h2M19.5 12h2M4.6 19.4 6 18M18 6l1.4-1.4" stroke-linecap="round" stroke-width="1.7"></path></svg></span></button></div></div></header><div class="hn-doc-shell"><aside class="hn-sidebar" aria-label="Documentation navigation"><div class="hn-sidebar-panel"><label class="hn-search"><span>Search pages</span><input type="search" value placeholder="Filter documentation..."/></label><div class="hn-sidebar-group"><h2>Introduction</h2><ul><li><a class href="/">Welcome</a></li><li><a class href="/guide/what-is-preactpress">What is PreactPress?</a></li><li><a class="active" href="/guide/getting-started" aria-current="page">Getting Started</a></li><li><a class href="/guide/routing">Routing</a></li><li><a class href="/guide/deploy">Deploy</a></li><li><a class href="/guide/first-five-minutes">Your first 5 minutes</a></li><li><a class href="/guide/creating-pages">Creating pages</a></li><li><a class href="/guide/commands">Commands</a></li><li><a class href="/guide/configuration">Configuration</a></li></ul></div><div class="hn-sidebar-group"><h2>Reference</h2><ul><li><a class href="/markdown-examples">Markdown examples</a></li><li><a class href="/interactive">Interactive MDX</a></li></ul></div></div></aside><main id="content" class="hn-doc-main"><article class="hn-doc"><h1 class="hn-doc-title">Getting Started</h1><p class="hn-doc-lead">Install PreactPress and start a new documentation site</p><div class="hn-doc-content"><h1 id="getting-started" class="pp-heading">Getting Started<a class="pp-heading-anchor" href="#getting-started" aria-label="Link to this section">#</a></h1>
27
- <p>This guide shows how to create a PreactPress site, understand the generated files, and start the development server.</p>
28
- <h2 id="prerequisites" class="pp-heading">Prerequisites<a class="pp-heading-anchor" href="#prerequisites" aria-label="Link to this section">#</a></h2>
29
- <p>You need:</p>
30
- <table>
31
- <thead>
32
- <tr>
33
- <th>Requirement</th>
34
- <th>Version</th>
35
- </tr>
36
- </thead>
37
- <tbody>
38
- <tr>
39
- <td>Node.js</td>
40
- <td>20 or higher</td>
41
- </tr>
42
- <tr>
43
- <td>Package manager</td>
44
- <td>pnpm recommended; npm, yarn, and bun also work</td>
45
- </tr>
46
- <tr>
47
- <td>Editor</td>
48
- <td>Any editor with Markdown and TypeScript support</td>
49
- </tr>
50
- </tbody>
51
- </table>
52
- <h2 id="create-a-site" class="pp-heading">Create a site<a class="pp-heading-anchor" href="#create-a-site" aria-label="Link to this section">#</a></h2>
53
- <p>Start in an empty directory:</p>
54
- <pre class="shiki shiki-themes github-light github-dark" style="background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8" tabindex="0"><code><span class="line"><span style="color:#6F42C1;--shiki-dark:#B392F0">mkdir</span><span style="color:#032F62;--shiki-dark:#9ECBFF"> my-site</span></span>
55
- <span class="line"><span style="color:#005CC5;--shiki-dark:#79B8FF">cd</span><span style="color:#032F62;--shiki-dark:#9ECBFF"> my-site</span></span>
56
- <span class="line"><span style="color:#6F42C1;--shiki-dark:#B392F0">pnpm</span><span style="color:#032F62;--shiki-dark:#9ECBFF"> dlx</span><span style="color:#032F62;--shiki-dark:#9ECBFF"> preactpress</span><span style="color:#032F62;--shiki-dark:#9ECBFF"> init</span></span>
57
- <span class="line"><span style="color:#6F42C1;--shiki-dark:#B392F0">pnpm</span><span style="color:#032F62;--shiki-dark:#9ECBFF"> install</span></span>
58
- <span class="line"><span style="color:#6F42C1;--shiki-dark:#B392F0">pnpm</span><span style="color:#032F62;--shiki-dark:#9ECBFF"> run</span><span style="color:#032F62;--shiki-dark:#9ECBFF"> dev</span></span></code></pre><p>With npm:</p>
59
- <pre class="shiki shiki-themes github-light github-dark" style="background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8" tabindex="0"><code><span class="line"><span style="color:#6F42C1;--shiki-dark:#B392F0">mkdir</span><span style="color:#032F62;--shiki-dark:#9ECBFF"> my-site</span></span>
60
- <span class="line"><span style="color:#005CC5;--shiki-dark:#79B8FF">cd</span><span style="color:#032F62;--shiki-dark:#9ECBFF"> my-site</span></span>
61
- <span class="line"><span style="color:#6F42C1;--shiki-dark:#B392F0">npx</span><span style="color:#032F62;--shiki-dark:#9ECBFF"> preactpress</span><span style="color:#032F62;--shiki-dark:#9ECBFF"> init</span></span>
62
- <span class="line"><span style="color:#6F42C1;--shiki-dark:#B392F0">npm</span><span style="color:#032F62;--shiki-dark:#9ECBFF"> install</span></span>
63
- <span class="line"><span style="color:#6F42C1;--shiki-dark:#B392F0">npm</span><span style="color:#032F62;--shiki-dark:#9ECBFF"> run</span><span style="color:#032F62;--shiki-dark:#9ECBFF"> dev</span></span></code></pre><p>Open <strong><a href="http://localhost:5173" target="_blank" rel="noopener noreferrer">http://localhost:5173</a></strong> to see the starter site.</p>
64
- <blockquote>
65
- <p><strong>Note</strong>
66
- <code>preactpress init</code> copies the built-in starter template and writes <code>preactpress</code> to <code>devDependencies</code>. You do not need to install PreactPress separately before running the initializer.</p>
67
- </blockquote>
68
- <h2 id="file-structure" class="pp-heading">File structure<a class="pp-heading-anchor" href="#file-structure" aria-label="Link to this section">#</a></h2>
69
- <p>After initialization, the project looks like this:</p>
70
- <pre class="shiki shiki-themes github-light github-dark" style="background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8" tabindex="0"><code><span class="line"><span>my-site/</span></span>
71
- <span class="line"><span>├── README.md</span></span>
72
- <span class="line"><span>├── index.html</span></span>
73
- <span class="line"><span>├── index.md</span></span>
74
- <span class="line"><span>├── about.md</span></span>
75
- <span class="line"><span>├── guide/</span></span>
76
- <span class="line"><span>│ └── first-five-minutes.md</span></span>
77
- <span class="line"><span>├── markdown-examples.md</span></span>
78
- <span class="line"><span>├── interactive.mdx</span></span>
79
- <span class="line"><span>├── components/</span></span>
80
- <span class="line"><span>│ └── Counter.tsx</span></span>
81
- <span class="line"><span>└── .preactpress/</span></span>
82
- <span class="line"><span> └── config.ts</span></span></code></pre><p>The <code>.preactpress</code> directory contains site configuration. Markdown and MDX files outside <code>.preactpress</code> are source files and become routes.</p>
83
- <h2 id="the-config-file" class="pp-heading">The config file<a class="pp-heading-anchor" href="#the-config-file" aria-label="Link to this section">#</a></h2>
84
- <p>The starter config lives at <code>.preactpress/config.ts</code>:</p>
85
- <pre class="shiki shiki-themes github-light github-dark" style="background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8" tabindex="0"><code><span class="line"><span style="color:#D73A49;--shiki-dark:#F97583">export</span><span style="color:#D73A49;--shiki-dark:#F97583"> default</span><span style="color:#24292E;--shiki-dark:#E1E4E8"> {</span></span>
86
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8"> site: {</span></span>
87
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8"> title: </span><span style="color:#032F62;--shiki-dark:#9ECBFF">'My Docs'</span><span style="color:#24292E;--shiki-dark:#E1E4E8">,</span></span>
88
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8"> description: </span><span style="color:#032F62;--shiki-dark:#9ECBFF">'Short summary for search and social previews'</span></span>
89
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8"> },</span></span>
90
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8"> themeConfig: {</span></span>
91
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8"> nav: [</span></span>
92
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8"> { text: </span><span style="color:#032F62;--shiki-dark:#9ECBFF">'Home'</span><span style="color:#24292E;--shiki-dark:#E1E4E8">, link: </span><span style="color:#032F62;--shiki-dark:#9ECBFF">'/'</span><span style="color:#24292E;--shiki-dark:#E1E4E8"> },</span></span>
93
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8"> { text: </span><span style="color:#032F62;--shiki-dark:#9ECBFF">'Guide'</span><span style="color:#24292E;--shiki-dark:#E1E4E8">, link: </span><span style="color:#032F62;--shiki-dark:#9ECBFF">'/guide/what-is-preactpress'</span><span style="color:#24292E;--shiki-dark:#E1E4E8"> }</span></span>
94
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8"> ],</span></span>
95
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8"> sidebar: [</span></span>
96
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8"> {</span></span>
97
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8"> text: </span><span style="color:#032F62;--shiki-dark:#9ECBFF">'Introduction'</span><span style="color:#24292E;--shiki-dark:#E1E4E8">,</span></span>
98
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8"> items: [</span></span>
99
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8"> { text: </span><span style="color:#032F62;--shiki-dark:#9ECBFF">'What is PreactPress?'</span><span style="color:#24292E;--shiki-dark:#E1E4E8">, link: </span><span style="color:#032F62;--shiki-dark:#9ECBFF">'/guide/what-is-preactpress'</span><span style="color:#24292E;--shiki-dark:#E1E4E8"> },</span></span>
100
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8"> { text: </span><span style="color:#032F62;--shiki-dark:#9ECBFF">'Getting Started'</span><span style="color:#24292E;--shiki-dark:#E1E4E8">, link: </span><span style="color:#032F62;--shiki-dark:#9ECBFF">'/guide/getting-started'</span><span style="color:#24292E;--shiki-dark:#E1E4E8"> }</span></span>
101
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8"> ]</span></span>
102
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8"> }</span></span>
103
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8"> ]</span></span>
104
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8"> }</span></span>
105
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8">}</span></span></code></pre><p>Use <code>site</code> for site-wide metadata and <code>themeConfig</code> for default-theme options such as logo (<code>logo: '/logo.svg'</code>), nav, sidebar, search, outline, footer, and edit links.</p>
106
- <h2 id="source-files" class="pp-heading">Source files<a class="pp-heading-anchor" href="#source-files" aria-label="Link to this section">#</a></h2>
107
- <p>PreactPress uses file-based routing. By default, the source directory is the project root:</p>
108
- <pre class="shiki shiki-themes github-light github-dark" style="background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8" tabindex="0"><code><span class="line"><span>index.md -> /</span></span>
109
- <span class="line"><span>about.md -> /about</span></span>
110
- <span class="line"><span>guide/getting-started.md -> /guide/getting-started</span></span>
111
- <span class="line"><span>interactive.mdx -> /interactive</span></span></code></pre><p>You can change the source directory with <code>srcDir</code>:</p>
112
- <pre class="shiki shiki-themes github-light github-dark" style="background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8" tabindex="0"><code><span class="line"><span style="color:#D73A49;--shiki-dark:#F97583">export</span><span style="color:#D73A49;--shiki-dark:#F97583"> default</span><span style="color:#24292E;--shiki-dark:#E1E4E8"> {</span></span>
113
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8"> srcDir: </span><span style="color:#032F62;--shiki-dark:#9ECBFF">'docs'</span></span>
114
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8">}</span></span></code></pre><p>With this config, PreactPress reads pages from <code>docs/</code> while <code>.preactpress/config.ts</code> still belongs to the project root.</p>
115
- <h2 id="commands" class="pp-heading">Commands<a class="pp-heading-anchor" href="#commands" aria-label="Link to this section">#</a></h2>
116
- <p>The starter includes npm scripts:</p>
117
- <table>
118
- <thead>
119
- <tr>
120
- <th>Command</th>
121
- <th>Purpose</th>
122
- </tr>
123
- </thead>
124
- <tbody>
125
- <tr>
126
- <td><code>pnpm run dev</code></td>
127
- <td>Start the dev server with SSR and hot reload</td>
128
- </tr>
129
- <tr>
130
- <td><code>pnpm run check</code></td>
131
- <td>Validate config, routes, and links</td>
132
- </tr>
133
- <tr>
134
- <td><code>pnpm run build</code></td>
135
- <td>Build the static production site into <code>dist/</code></td>
136
- </tr>
137
- <tr>
138
- <td><code>pnpm run preview</code></td>
139
- <td>Preview the production build locally</td>
140
- </tr>
141
- </tbody>
142
- </table>
143
- <p>You can also call the CLI directly:</p>
144
- <pre class="shiki shiki-themes github-light github-dark" style="background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8" tabindex="0"><code><span class="line"><span style="color:#6F42C1;--shiki-dark:#B392F0">pnpm</span><span style="color:#032F62;--shiki-dark:#9ECBFF"> exec</span><span style="color:#032F62;--shiki-dark:#9ECBFF"> preactpress</span><span style="color:#032F62;--shiki-dark:#9ECBFF"> dev</span></span>
145
- <span class="line"><span style="color:#6F42C1;--shiki-dark:#B392F0">pnpm</span><span style="color:#032F62;--shiki-dark:#9ECBFF"> exec</span><span style="color:#032F62;--shiki-dark:#9ECBFF"> preactpress</span><span style="color:#032F62;--shiki-dark:#9ECBFF"> check</span></span>
146
- <span class="line"><span style="color:#6F42C1;--shiki-dark:#B392F0">pnpm</span><span style="color:#032F62;--shiki-dark:#9ECBFF"> exec</span><span style="color:#032F62;--shiki-dark:#9ECBFF"> preactpress</span><span style="color:#032F62;--shiki-dark:#9ECBFF"> build</span></span>
147
- <span class="line"><span style="color:#6F42C1;--shiki-dark:#B392F0">pnpm</span><span style="color:#032F62;--shiki-dark:#9ECBFF"> exec</span><span style="color:#032F62;--shiki-dark:#9ECBFF"> preactpress</span><span style="color:#032F62;--shiki-dark:#9ECBFF"> preview</span></span></code></pre><h2 id="what-s-next" class="pp-heading">What’s next?<a class="pp-heading-anchor" href="#what-s-next" aria-label="Link to this section">#</a></h2>
148
- <table>
149
- <thead>
150
- <tr>
151
- <th>Page</th>
152
- <th>Why</th>
153
- </tr>
154
- </thead>
155
- <tbody>
156
- <tr>
157
- <td><a href="/guide/first-five-minutes">Your first 5 minutes</a></td>
158
- <td>Change the title, add a page, and wire navigation</td>
159
- </tr>
160
- <tr>
161
- <td><a href="/guide/routing">Routing</a></td>
162
- <td>Learn how Markdown files map to URLs</td>
163
- </tr>
164
- <tr>
165
- <td><a href="/guide/deploy">Deploy</a></td>
166
- <td>Build and publish the generated <code>dist/</code> directory</td>
167
- </tr>
168
- </tbody>
169
- </table>
170
- </div><nav class="hn-pager" aria-label="Page navigation"><a class="previous" href="/guide/what-is-preactpress"><span>Previous</span>What is PreactPress?</a><a class="next" href="/guide/routing"><span>Next</span>Routing</a></nav><footer class="hn-doc-meta"><span>Updated Jun 4, 2026</span></footer></article></main><aside class="hn-outline" aria-label="On this page"><div class="hn-outline-panel"><h2>On this page</h2><ul><li class="level-2"><a href="#prerequisites">Prerequisites</a></li><li class="level-2"><a href="#create-a-site">Create a site</a></li><li class="level-2"><a href="#file-structure">File structure</a></li><li class="level-2"><a href="#the-config-file">The config file</a></li><li class="level-2"><a href="#source-files">Source files</a></li><li class="level-2"><a href="#commands">Commands</a></li><li class="level-2"><a href="#what-s-next">What's next?</a></li></ul></div></aside></div><footer class="hn-footer">Built with PreactPress.</footer></div></div>
171
- <script type="module" crossorigin src="/assets/main-Bqi-VFEk.js"></script>
172
- </body>
173
- </html>
@@ -1,165 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Routing | Hono Starter</title>
7
- <script src="/preactpress-theme.js"></script>
8
- <meta name="description" content="Understand how PreactPress maps files to URLs">
9
- <meta property="og:title" content="Routing | Hono Starter">
10
- <meta property="og:description" content="Understand how PreactPress maps files to URLs">
11
- <meta property="og:type" content="website">
12
- <meta property="og:url" content="/guide/routing/">
13
- <meta name="twitter:card" content="summary">
14
- <meta name="twitter:title" content="Routing | Hono Starter">
15
- <meta name="twitter:description" content="Understand how PreactPress maps files to URLs">
16
- <link rel="canonical" href="/guide/routing/">
17
- <script type="application/ld+json">{"@context":"https://schema.org","@type":"WebPage","headline":"Routing | Hono Starter","name":"Routing | Hono Starter","description":"Understand how PreactPress maps files to URLs","url":"/guide/routing/","dateModified":"2026-06-05T06:28:08.578Z"}</script>
18
- <link rel="icon" href="/favicon.svg" type="image/svg+xml">
19
- <link rel="icon" href="/favicon-32.png" type="image/png" sizes="32x32">
20
- <link rel="icon" href="/favicon.png" type="image/png" sizes="any">
21
- <link rel="apple-touch-icon" href="/favicon.png">
22
- <link rel="stylesheet" crossorigin href="/assets/main-DIIN7FO0.css">
23
- </head>
24
- <body>
25
- <template id="__PREACTPRESS_PAGE_DATA__">{&quot;kind&quot;:&quot;markdown&quot;,&quot;meta&quot;:{&quot;title&quot;:&quot;Routing&quot;,&quot;description&quot;:&quot;Understand how PreactPress maps files to URLs&quot;},&quot;html&quot;:&quot;\u003ch1 id=\&quot;routing\&quot; class=\&quot;pp-heading\&quot;&gt;Routing\u003ca class=\&quot;pp-heading-anchor\&quot; href=\&quot;#routing\&quot; aria-label=\&quot;Link to this section\&quot;&gt;#\u003c/a&gt;\u003c/h1&gt;\n\u003cp&gt;PreactPress uses file-based routing. Every \u003ccode&gt;.md\u003c/code&gt; and \u003ccode&gt;.mdx\u003c/code&gt; file under \u003ccode&gt;srcDir\u003c/code&gt; becomes a route, and production builds write each route as static HTML.\u003c/p&gt;\n\u003ch2 id=\&quot;file-based-routing\&quot; class=\&quot;pp-heading\&quot;&gt;File-based routing\u003ca class=\&quot;pp-heading-anchor\&quot; href=\&quot;#file-based-routing\&quot; aria-label=\&quot;Link to this section\&quot;&gt;#\u003c/a&gt;\u003c/h2&gt;\n\u003cp&gt;Given this structure:\u003c/p&gt;\n\u003cpre class=\&quot;shiki shiki-themes github-light github-dark\&quot; style=\&quot;background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8\&quot; tabindex=\&quot;0\&quot;&gt;\u003ccode&gt;\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;.\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;├── index.md\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;├── about.md\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;├── guide/\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;│ ├── index.md\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;│ └── getting-started.md\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;└── interactive.mdx\u003c/span&gt;\u003c/span&gt;\u003c/code&gt;\u003c/pre&gt;\u003cp&gt;PreactPress creates these routes:\u003c/p&gt;\n\u003cpre class=\&quot;shiki shiki-themes github-light github-dark\&quot; style=\&quot;background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8\&quot; tabindex=\&quot;0\&quot;&gt;\u003ccode&gt;\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;index.md -&gt; /\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;about.md -&gt; /about\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;guide/index.md -&gt; /guide\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;guide/getting-started.md -&gt; /guide/getting-started\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;interactive.mdx -&gt; /interactive\u003c/span&gt;\u003c/span&gt;\u003c/code&gt;\u003c/pre&gt;\u003cp&gt;During production builds, routes are written as directory indexes:\u003c/p&gt;\n\u003cpre class=\&quot;shiki shiki-themes github-light github-dark\&quot; style=\&quot;background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8\&quot; tabindex=\&quot;0\&quot;&gt;\u003ccode&gt;\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;/ -&gt; dist/index.html\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;/about -&gt; dist/about/index.html\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;/guide/getting-started -&gt; dist/guide/getting-started/index.html\u003c/span&gt;\u003c/span&gt;\u003c/code&gt;\u003c/pre&gt;\u003cp&gt;By default (\u003ccode&gt;cleanUrls: true\u003c/code&gt;), builds emit directory indexes so hosts can serve extensionless URLs.\u003c/p&gt;\n\u003ch2 id=\&quot;project-root-and-source-directory\&quot; class=\&quot;pp-heading\&quot;&gt;Project root and source directory\u003ca class=\&quot;pp-heading-anchor\&quot; href=\&quot;#project-root-and-source-directory\&quot; aria-label=\&quot;Link to this section\&quot;&gt;#\u003c/a&gt;\u003c/h2&gt;\n\u003cp&gt;The project root is where PreactPress looks for \u003ccode&gt;.preactpress/config.ts\u003c/code&gt;.\u003c/p&gt;\n\u003cp&gt;By default, source files also live in the project root:\u003c/p&gt;\n\u003cpre class=\&quot;shiki shiki-themes github-light github-dark\&quot; style=\&quot;background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8\&quot; tabindex=\&quot;0\&quot;&gt;\u003ccode&gt;\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;.\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;├── .preactpress/\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;│ └── config.ts\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;├── index.md\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;└── guide/\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt; └── getting-started.md\u003c/span&gt;\u003c/span&gt;\u003c/code&gt;\u003c/pre&gt;\u003cp&gt;You can move content into a nested source directory with \u003ccode&gt;srcDir\u003c/code&gt;:\u003c/p&gt;\n\u003cpre class=\&quot;shiki shiki-themes github-light github-dark\&quot; style=\&quot;background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8\&quot; tabindex=\&quot;0\&quot;&gt;\u003ccode&gt;\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#D73A49;--shiki-dark:#F97583\&quot;&gt;export\u003c/span&gt;\u003cspan style=\&quot;color:#D73A49;--shiki-dark:#F97583\&quot;&gt; default\u003c/span&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; {\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; srcDir: \u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt;'docs'\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt;}\u003c/span&gt;\u003c/span&gt;\u003c/code&gt;\u003c/pre&gt;\u003cp&gt;That produces this shape:\u003c/p&gt;\n\u003cpre class=\&quot;shiki shiki-themes github-light github-dark\&quot; style=\&quot;background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8\&quot; tabindex=\&quot;0\&quot;&gt;\u003ccode&gt;\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;.\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;├── .preactpress/\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;│ └── config.ts\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;└── docs/\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt; ├── index.md\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt; └── guide/\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt; └── getting-started.md\u003c/span&gt;\u003c/span&gt;\u003c/code&gt;\u003c/pre&gt;\u003cp&gt;The resulting routes stay the same:\u003c/p&gt;\n\u003cpre class=\&quot;shiki shiki-themes github-light github-dark\&quot; style=\&quot;background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8\&quot; tabindex=\&quot;0\&quot;&gt;\u003ccode&gt;\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;docs/index.md -&gt; /\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;docs/guide/getting-started.md -&gt; /guide/getting-started\u003c/span&gt;\u003c/span&gt;\u003c/code&gt;\u003c/pre&gt;\u003ch2 id=\&quot;linking-between-pages\&quot; class=\&quot;pp-heading\&quot;&gt;Linking between pages\u003ca class=\&quot;pp-heading-anchor\&quot; href=\&quot;#linking-between-pages\&quot; aria-label=\&quot;Link to this section\&quot;&gt;#\u003c/a&gt;\u003c/h2&gt;\n\u003cp&gt;Use absolute or relative links. The recommended style is to omit file extensions:\u003c/p&gt;\n\u003cpre class=\&quot;shiki shiki-themes github-light github-dark\&quot; style=\&quot;background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8\&quot; tabindex=\&quot;0\&quot;&gt;\u003ccode&gt;\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt;[\u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-light-text-decoration:underline;--shiki-dark:#DBEDFF;--shiki-dark-text-decoration:underline\&quot;&gt;Getting Started\u003c/span&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt;](\u003c/span&gt;\u003cspan style=\&quot;color:#24292E;--shiki-light-text-decoration:underline;--shiki-dark:#E1E4E8;--shiki-dark-text-decoration:underline\&quot;&gt;/guide/getting-started\u003c/span&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt;)\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt;[\u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-light-text-decoration:underline;--shiki-dark:#DBEDFF;--shiki-dark-text-decoration:underline\&quot;&gt;Routing\u003c/span&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt;](\u003c/span&gt;\u003cspan style=\&quot;color:#24292E;--shiki-light-text-decoration:underline;--shiki-dark:#E1E4E8;--shiki-dark-text-decoration:underline\&quot;&gt;./routing\u003c/span&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt;)\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt;[\u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-light-text-decoration:underline;--shiki-dark:#DBEDFF;--shiki-dark-text-decoration:underline\&quot;&gt;Home\u003c/span&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt;](\u003c/span&gt;\u003cspan style=\&quot;color:#24292E;--shiki-light-text-decoration:underline;--shiki-dark:#E1E4E8;--shiki-dark-text-decoration:underline\&quot;&gt;../\u003c/span&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt;)\u003c/span&gt;\u003c/span&gt;\u003c/code&gt;\u003c/pre&gt;\u003cp&gt;Avoid linking directly to generated HTML or source Markdown:\u003c/p&gt;\n\u003cpre class=\&quot;shiki shiki-themes github-light github-dark\&quot; style=\&quot;background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8\&quot; tabindex=\&quot;0\&quot;&gt;\u003ccode&gt;\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#6A737D;--shiki-dark:#6A737D\&quot;&gt;&amp;#x3C;!-- Avoid --&gt;\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt;[\u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-light-text-decoration:underline;--shiki-dark:#DBEDFF;--shiki-dark-text-decoration:underline\&quot;&gt;Getting Started\u003c/span&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt;](\u003c/span&gt;\u003cspan style=\&quot;color:#24292E;--shiki-light-text-decoration:underline;--shiki-dark:#E1E4E8;--shiki-dark-text-decoration:underline\&quot;&gt;/guide/getting-started.md\u003c/span&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt;)\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt;[\u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-light-text-decoration:underline;--shiki-dark:#DBEDFF;--shiki-dark-text-decoration:underline\&quot;&gt;Getting Started\u003c/span&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt;](\u003c/span&gt;\u003cspan style=\&quot;color:#24292E;--shiki-light-text-decoration:underline;--shiki-dark:#E1E4E8;--shiki-dark-text-decoration:underline\&quot;&gt;/guide/getting-started.html\u003c/span&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt;)\u003c/span&gt;\u003c/span&gt;\u003c/code&gt;\u003c/pre&gt;\u003cp&gt;\u003ccode&gt;preactpress check\u003c/code&gt; validates local Markdown links that use \u003ccode&gt;.md\u003c/code&gt;, \u003ccode&gt;.mdx\u003c/code&gt;, or \u003ccode&gt;.html\u003c/code&gt; extensions and reports missing pages.\u003c/p&gt;\n\u003ch2 id=\&quot;locale-routes\&quot; class=\&quot;pp-heading\&quot;&gt;Locale routes\u003ca class=\&quot;pp-heading-anchor\&quot; href=\&quot;#locale-routes\&quot; aria-label=\&quot;Link to this section\&quot;&gt;#\u003c/a&gt;\u003c/h2&gt;\n\u003cp&gt;PreactPress supports VitePress-style locale folders. Keep the default language at the root and put translations in locale folders:\u003c/p&gt;\n\u003cpre class=\&quot;shiki shiki-themes github-light github-dark\&quot; style=\&quot;background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8\&quot; tabindex=\&quot;0\&quot;&gt;\u003ccode&gt;\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;index.md -&gt; /\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;guide/getting-started.md -&gt; /guide/getting-started\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;de/index.md -&gt; /de\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;de/guide/getting-started.md -&gt; /de/guide/getting-started\u003c/span&gt;\u003c/span&gt;\u003c/code&gt;\u003c/pre&gt;\u003cp&gt;Configure locale labels, language codes, and locale-specific nav in \u003ccode&gt;.preactpress/config.ts\u003c/code&gt;:\u003c/p&gt;\n\u003cpre class=\&quot;shiki shiki-themes github-light github-dark\&quot; style=\&quot;background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8\&quot; tabindex=\&quot;0\&quot;&gt;\u003ccode&gt;\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#D73A49;--shiki-dark:#F97583\&quot;&gt;export\u003c/span&gt;\u003cspan style=\&quot;color:#D73A49;--shiki-dark:#F97583\&quot;&gt; default\u003c/span&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; {\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; locales: {\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; root: {\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; label: \u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt;'English'\u003c/span&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt;,\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; lang: \u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt;'en'\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; },\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; de: {\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; label: \u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt;'Deutsch'\u003c/span&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt;,\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; lang: \u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt;'de'\u003c/span&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt;,\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; link: \u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt;'/de/'\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; }\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; }\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt;}\u003c/span&gt;\u003c/span&gt;\u003c/code&gt;\u003c/pre&gt;\u003cp&gt;The default theme shows a language switcher when multiple locales are configured.\u003c/p&gt;\n\u003ch2 id=\&quot;tag-routes\&quot; class=\&quot;pp-heading\&quot;&gt;Tag routes\u003ca class=\&quot;pp-heading-anchor\&quot; href=\&quot;#tag-routes\&quot; aria-label=\&quot;Link to this section\&quot;&gt;#\u003c/a&gt;\u003c/h2&gt;\n\u003cp&gt;Pages can define tags in frontmatter:\u003c/p&gt;\n\u003cpre class=\&quot;shiki shiki-themes github-light github-dark\&quot; style=\&quot;background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8\&quot; tabindex=\&quot;0\&quot;&gt;\u003ccode&gt;\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt;---\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#22863A;--shiki-dark:#85E89D\&quot;&gt;title\u003c/span&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt;: \u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt;Release notes\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#22863A;--shiki-dark:#85E89D\&quot;&gt;tags\u003c/span&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt;: [\u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt;release\u003c/span&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt;, \u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt;changelog\u003c/span&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt;]\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt;---\u003c/span&gt;\u003c/span&gt;\u003c/code&gt;\u003c/pre&gt;\u003cp&gt;Each tag receives an index page:\u003c/p&gt;\n\u003cpre class=\&quot;shiki shiki-themes github-light github-dark\&quot; style=\&quot;background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8\&quot; tabindex=\&quot;0\&quot;&gt;\u003ccode&gt;\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;release -&gt; /tags/release\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;changelog -&gt; /tags/changelog\u003c/span&gt;\u003c/span&gt;\u003c/code&gt;\u003c/pre&gt;\u003cp&gt;For localized content, tag pages are scoped to the locale:\u003c/p&gt;\n\u003cpre class=\&quot;shiki shiki-themes github-light github-dark\&quot; style=\&quot;background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8\&quot; tabindex=\&quot;0\&quot;&gt;\u003ccode&gt;\u003cspan class=\&quot;line\&quot;&gt;\u003cspan&gt;de/guide/intro.md with tag \&quot;Markdown\&quot; -&gt; /de/tags/markdown\u003c/span&gt;\u003c/span&gt;\u003c/code&gt;\u003c/pre&gt;\u003cp&gt;If a real Markdown or MDX page exists at the same route as a generated tag index, the real page wins.\u003c/p&gt;\n\u003ch2 id=\&quot;base-path\&quot; class=\&quot;pp-heading\&quot;&gt;Base path\u003ca class=\&quot;pp-heading-anchor\&quot; href=\&quot;#base-path\&quot; aria-label=\&quot;Link to this section\&quot;&gt;#\u003c/a&gt;\u003c/h2&gt;\n\u003cp&gt;Use \u003ccode&gt;site.base\u003c/code&gt; when the site is served from a subpath, for example GitHub Pages project sites:\u003c/p&gt;\n\u003cpre class=\&quot;shiki shiki-themes github-light github-dark\&quot; style=\&quot;background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8\&quot; tabindex=\&quot;0\&quot;&gt;\u003ccode&gt;\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#D73A49;--shiki-dark:#F97583\&quot;&gt;export\u003c/span&gt;\u003cspan style=\&quot;color:#D73A49;--shiki-dark:#F97583\&quot;&gt; default\u003c/span&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; {\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; site: {\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; base: \u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt;'/my-repo/'\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; }\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt;}\u003c/span&gt;\u003c/span&gt;\u003c/code&gt;\u003c/pre&gt;\u003cp&gt;You can also override it for one build:\u003c/p&gt;\n\u003cpre class=\&quot;shiki shiki-themes github-light github-dark\&quot; style=\&quot;background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8\&quot; tabindex=\&quot;0\&quot;&gt;\u003ccode&gt;\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#6F42C1;--shiki-dark:#B392F0\&quot;&gt;pnpm\u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt; exec\u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt; preactpress\u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt; build\u003c/span&gt;\u003cspan style=\&quot;color:#005CC5;--shiki-dark:#79B8FF\&quot;&gt; --base\u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt; /my-repo/\u003c/span&gt;\u003c/span&gt;\u003c/code&gt;\u003c/pre&gt;\u003ch2 id=\&quot;route-rewrites\&quot; class=\&quot;pp-heading\&quot;&gt;Route rewrites\u003ca class=\&quot;pp-heading-anchor\&quot; href=\&quot;#route-rewrites\&quot; aria-label=\&quot;Link to this section\&quot;&gt;#\u003c/a&gt;\u003c/h2&gt;\n\u003cp&gt;Map a public URL to existing content without duplicating files:\u003c/p&gt;\n\u003cpre class=\&quot;shiki shiki-themes github-light github-dark\&quot; style=\&quot;background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8\&quot; tabindex=\&quot;0\&quot;&gt;\u003ccode&gt;\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#D73A49;--shiki-dark:#F97583\&quot;&gt;export\u003c/span&gt;\u003cspan style=\&quot;color:#D73A49;--shiki-dark:#F97583\&quot;&gt; default\u003c/span&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; {\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; rewrites: {\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt; '/docs'\u003c/span&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt;: \u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt;'/guide'\u003c/span&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt;,\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt; '/getting-started'\u003c/span&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt;: \u003c/span&gt;\u003cspan style=\&quot;color:#032F62;--shiki-dark:#9ECBFF\&quot;&gt;'/guide/intro'\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; }\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt;}\u003c/span&gt;\u003c/span&gt;\u003c/code&gt;\u003c/pre&gt;\u003cp&gt;Keys are the routes visitors use; values must point at routes that already exist from your Markdown files. \u003ccode&gt;preactpress check\u003c/code&gt; validates rewrite sources and collisions.\u003c/p&gt;\n\u003ch2 id=\&quot;clean-urls-and-hosting\&quot; class=\&quot;pp-heading\&quot;&gt;Clean URLs and hosting\u003ca class=\&quot;pp-heading-anchor\&quot; href=\&quot;#clean-urls-and-hosting\&quot; aria-label=\&quot;Link to this section\&quot;&gt;#\u003c/a&gt;\u003c/h2&gt;\n\u003ctable&gt;\n\u003cthead&gt;\n\u003ctr&gt;\n\u003cth&gt;\u003ccode&gt;cleanUrls\u003c/code&gt;\u003c/th&gt;\n\u003cth&gt;Output for \u003ccode&gt;/about\u003c/code&gt;\u003c/th&gt;\n\u003cth&gt;Typical host\u003c/th&gt;\n\u003c/tr&gt;\n\u003c/thead&gt;\n\u003ctbody&gt;\n\u003ctr&gt;\n\u003ctd&gt;\u003ccode&gt;true\u003c/code&gt; (default)\u003c/td&gt;\n\u003ctd&gt;\u003ccode&gt;dist/about/index.html\u003c/code&gt;\u003c/td&gt;\n\u003ctd&gt;Netlify, Vercel, Cloudflare Pages, GitHub Pages\u003c/td&gt;\n\u003c/tr&gt;\n\u003ctr&gt;\n\u003ctd&gt;\u003ccode&gt;false\u003c/code&gt;\u003c/td&gt;\n\u003ctd&gt;\u003ccode&gt;dist/about.html\u003c/code&gt;\u003c/td&gt;\n\u003ctd&gt;Static buckets without directory index support\u003c/td&gt;\n\u003c/tr&gt;\n\u003c/tbody&gt;\n\u003c/table&gt;\n\u003cpre class=\&quot;shiki shiki-themes github-light github-dark\&quot; style=\&quot;background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8\&quot; tabindex=\&quot;0\&quot;&gt;\u003ccode&gt;\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#D73A49;--shiki-dark:#F97583\&quot;&gt;export\u003c/span&gt;\u003cspan style=\&quot;color:#D73A49;--shiki-dark:#F97583\&quot;&gt; default\u003c/span&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; {\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt; cleanUrls: \u003c/span&gt;\u003cspan style=\&quot;color:#005CC5;--shiki-dark:#79B8FF\&quot;&gt;false\u003c/span&gt;\u003c/span&gt;\n\u003cspan class=\&quot;line\&quot;&gt;\u003cspan style=\&quot;color:#24292E;--shiki-dark:#E1E4E8\&quot;&gt;}\u003c/span&gt;\u003c/span&gt;\u003c/code&gt;\u003c/pre&gt;\u003cp&gt;Most modern static hosts work with the default. Set \u003ccode&gt;cleanUrls: false\u003c/code&gt; only when your host cannot resolve \u003ccode&gt;/about\u003c/code&gt; to \u003ccode&gt;about/index.html\u003c/code&gt;.\u003c/p&gt;\n\u003ch2 id=\&quot;current-limitations\&quot; class=\&quot;pp-heading\&quot;&gt;Current limitations\u003ca class=\&quot;pp-heading-anchor\&quot; href=\&quot;#current-limitations\&quot; aria-label=\&quot;Link to this section\&quot;&gt;#\u003c/a&gt;\u003c/h2&gt;\n\u003cp&gt;PreactPress intentionally keeps routing small. Compared with VitePress, it does not currently include:\u003c/p&gt;\n\u003ctable&gt;\n\u003cthead&gt;\n\u003ctr&gt;\n\u003cth&gt;Feature\u003c/th&gt;\n\u003cth&gt;Status\u003c/th&gt;\n\u003c/tr&gt;\n\u003c/thead&gt;\n\u003ctbody&gt;\n\u003ctr&gt;\n\u003ctd&gt;Dynamic routes such as \u003ccode&gt;[pkg].paths.ts\u003c/code&gt;\u003c/td&gt;\n\u003ctd&gt;Not supported\u003c/td&gt;\n\u003c/tr&gt;\n\u003ctr&gt;\n\u003ctd&gt;Pattern-based rewrites with params\u003c/td&gt;\n\u003ctd&gt;Not supported\u003c/td&gt;\n\u003c/tr&gt;\n\u003c/tbody&gt;\n\u003c/table&gt;\n\u003cp&gt;If your site needs many generated pages from external data, generate Markdown or MDX files before running \u003ccode&gt;preactpress build\u003c/code&gt;.\u003c/p&gt;\n&quot;,&quot;title&quot;:&quot;Routing&quot;,&quot;description&quot;:&quot;Understand how PreactPress maps files to URLs&quot;,&quot;tags&quot;:[],&quot;pageType&quot;:&quot;website&quot;,&quot;headings&quot;:[{&quot;id&quot;:&quot;file-based-routing&quot;,&quot;text&quot;:&quot;File-based routing&quot;,&quot;level&quot;:2},{&quot;id&quot;:&quot;project-root-and-source-directory&quot;,&quot;text&quot;:&quot;Project root and source directory&quot;,&quot;level&quot;:2},{&quot;id&quot;:&quot;linking-between-pages&quot;,&quot;text&quot;:&quot;Linking between pages&quot;,&quot;level&quot;:2},{&quot;id&quot;:&quot;locale-routes&quot;,&quot;text&quot;:&quot;Locale routes&quot;,&quot;level&quot;:2},{&quot;id&quot;:&quot;tag-routes&quot;,&quot;text&quot;:&quot;Tag routes&quot;,&quot;level&quot;:2},{&quot;id&quot;:&quot;base-path&quot;,&quot;text&quot;:&quot;Base path&quot;,&quot;level&quot;:2},{&quot;id&quot;:&quot;route-rewrites&quot;,&quot;text&quot;:&quot;Route rewrites&quot;,&quot;level&quot;:2},{&quot;id&quot;:&quot;clean-urls-and-hosting&quot;,&quot;text&quot;:&quot;Clean URLs and hosting&quot;,&quot;level&quot;:2},{&quot;id&quot;:&quot;current-limitations&quot;,&quot;text&quot;:&quot;Current limitations&quot;,&quot;level&quot;:2}],&quot;relativePath&quot;:&quot;guide/routing.md&quot;,&quot;lastUpdated&quot;:&quot;2026-06-05T06:28:08.578Z&quot;}</template>
26
- <div id="app"><div class="hn-site"><a class="hn-skip" href="#content">Skip to content</a><header class="hn-header"><div class="hn-header-inner"><a class="hn-brand" href="/" aria-label="Hono Starter"><span class="hn-logo" aria-label="Hono Starter"><svg aria-hidden="true" viewBox="0 0 36 36" width="36" height="36"><rect width="36" height="36" rx="11" fill="currentColor" opacity="0.12"></rect><path d="M19.8 5.5c.8 4-2.8 5.9-4.7 8.2-1.8 2.1-2.5 4.9-.3 7 0-2.8 1.7-4.6 4.2-6.7 3.2 3 5.3 5.8 5.3 9.2 0 4.4-3.3 7.3-7.6 7.3-4.8 0-8.3-3.6-8.3-8.4 0-6.1 6.3-9.2 11.4-16.6Z" fill="currentColor"></path><path d="M21.7 25.7c0 2.2-1.7 3.8-3.9 3.8s-4-1.6-4-3.8c0-1.7 1-3.1 3.4-5.2.1 1.7 1.4 2.6 2.4 3.4.8.6 2.1 1 2.1 1.8Z" fill="currentColor" opacity="0.38"></path></svg><span>Hono Starter</span></span></a><div class="hn-header-actions"><nav class="hn-nav" aria-label="Main navigation"><a class href="/guide/what-is-preactpress">Docs</a><a class href="/markdown-examples">Examples</a><a class href="/about">About</a></nav><div class="hn-social" aria-label="Social links"><a href="https://github.com/your-org/your-project" aria-label="GitHub"><span><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path fill="currentColor" d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.404 1.02.005 2.04.137 3 .404 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg></span></a></div><details class="hn-locale-switcher"><summary>English</summary><div class="hn-locale-menu"><a href="/guide/routing" aria-current="page" class="active">English</a><a href="/de/guide/routing" class>Deutsch</a></div></details><button type="button" class="hn-theme-toggle" aria-label="Toggle theme"><span class="hn-theme-toggle-moon" aria-hidden="true"><svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor"><path d="M21 14.8A8.5 8.5 0 0 1 9.2 3a7 7 0 1 0 11.8 11.8Z" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.7"></path></svg></span><span class="hn-theme-toggle-sun" aria-hidden="true"><svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor"><circle cx="12" cy="12" r="3.5" stroke-width="1.7"></circle><path d="M12 2.5v2M12 19.5v2M4.6 4.6 6 6M18 18l1.4 1.4M2.5 12h2M19.5 12h2M4.6 19.4 6 18M18 6l1.4-1.4" stroke-linecap="round" stroke-width="1.7"></path></svg></span></button></div></div></header><div class="hn-doc-shell"><aside class="hn-sidebar" aria-label="Documentation navigation"><div class="hn-sidebar-panel"><label class="hn-search"><span>Search pages</span><input type="search" value placeholder="Filter documentation..."/></label><div class="hn-sidebar-group"><h2>Introduction</h2><ul><li><a class href="/">Welcome</a></li><li><a class href="/guide/what-is-preactpress">What is PreactPress?</a></li><li><a class href="/guide/getting-started">Getting Started</a></li><li><a class="active" href="/guide/routing" aria-current="page">Routing</a></li><li><a class href="/guide/deploy">Deploy</a></li><li><a class href="/guide/first-five-minutes">Your first 5 minutes</a></li><li><a class href="/guide/creating-pages">Creating pages</a></li><li><a class href="/guide/commands">Commands</a></li><li><a class href="/guide/configuration">Configuration</a></li></ul></div><div class="hn-sidebar-group"><h2>Reference</h2><ul><li><a class href="/markdown-examples">Markdown examples</a></li><li><a class href="/interactive">Interactive MDX</a></li></ul></div></div></aside><main id="content" class="hn-doc-main"><article class="hn-doc"><h1 class="hn-doc-title">Routing</h1><p class="hn-doc-lead">Understand how PreactPress maps files to URLs</p><div class="hn-doc-content"><h1 id="routing" class="pp-heading">Routing<a class="pp-heading-anchor" href="#routing" aria-label="Link to this section">#</a></h1>
27
- <p>PreactPress uses file-based routing. Every <code>.md</code> and <code>.mdx</code> file under <code>srcDir</code> becomes a route, and production builds write each route as static HTML.</p>
28
- <h2 id="file-based-routing" class="pp-heading">File-based routing<a class="pp-heading-anchor" href="#file-based-routing" aria-label="Link to this section">#</a></h2>
29
- <p>Given this structure:</p>
30
- <pre class="shiki shiki-themes github-light github-dark" style="background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8" tabindex="0"><code><span class="line"><span>.</span></span>
31
- <span class="line"><span>├── index.md</span></span>
32
- <span class="line"><span>├── about.md</span></span>
33
- <span class="line"><span>├── guide/</span></span>
34
- <span class="line"><span>│ ├── index.md</span></span>
35
- <span class="line"><span>│ └── getting-started.md</span></span>
36
- <span class="line"><span>└── interactive.mdx</span></span></code></pre><p>PreactPress creates these routes:</p>
37
- <pre class="shiki shiki-themes github-light github-dark" style="background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8" tabindex="0"><code><span class="line"><span>index.md -> /</span></span>
38
- <span class="line"><span>about.md -> /about</span></span>
39
- <span class="line"><span>guide/index.md -> /guide</span></span>
40
- <span class="line"><span>guide/getting-started.md -> /guide/getting-started</span></span>
41
- <span class="line"><span>interactive.mdx -> /interactive</span></span></code></pre><p>During production builds, routes are written as directory indexes:</p>
42
- <pre class="shiki shiki-themes github-light github-dark" style="background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8" tabindex="0"><code><span class="line"><span>/ -> dist/index.html</span></span>
43
- <span class="line"><span>/about -> dist/about/index.html</span></span>
44
- <span class="line"><span>/guide/getting-started -> dist/guide/getting-started/index.html</span></span></code></pre><p>By default (<code>cleanUrls: true</code>), builds emit directory indexes so hosts can serve extensionless URLs.</p>
45
- <h2 id="project-root-and-source-directory" class="pp-heading">Project root and source directory<a class="pp-heading-anchor" href="#project-root-and-source-directory" aria-label="Link to this section">#</a></h2>
46
- <p>The project root is where PreactPress looks for <code>.preactpress/config.ts</code>.</p>
47
- <p>By default, source files also live in the project root:</p>
48
- <pre class="shiki shiki-themes github-light github-dark" style="background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8" tabindex="0"><code><span class="line"><span>.</span></span>
49
- <span class="line"><span>├── .preactpress/</span></span>
50
- <span class="line"><span>│ └── config.ts</span></span>
51
- <span class="line"><span>├── index.md</span></span>
52
- <span class="line"><span>└── guide/</span></span>
53
- <span class="line"><span> └── getting-started.md</span></span></code></pre><p>You can move content into a nested source directory with <code>srcDir</code>:</p>
54
- <pre class="shiki shiki-themes github-light github-dark" style="background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8" tabindex="0"><code><span class="line"><span style="color:#D73A49;--shiki-dark:#F97583">export</span><span style="color:#D73A49;--shiki-dark:#F97583"> default</span><span style="color:#24292E;--shiki-dark:#E1E4E8"> {</span></span>
55
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8"> srcDir: </span><span style="color:#032F62;--shiki-dark:#9ECBFF">'docs'</span></span>
56
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8">}</span></span></code></pre><p>That produces this shape:</p>
57
- <pre class="shiki shiki-themes github-light github-dark" style="background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8" tabindex="0"><code><span class="line"><span>.</span></span>
58
- <span class="line"><span>├── .preactpress/</span></span>
59
- <span class="line"><span>│ └── config.ts</span></span>
60
- <span class="line"><span>└── docs/</span></span>
61
- <span class="line"><span> ├── index.md</span></span>
62
- <span class="line"><span> └── guide/</span></span>
63
- <span class="line"><span> └── getting-started.md</span></span></code></pre><p>The resulting routes stay the same:</p>
64
- <pre class="shiki shiki-themes github-light github-dark" style="background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8" tabindex="0"><code><span class="line"><span>docs/index.md -> /</span></span>
65
- <span class="line"><span>docs/guide/getting-started.md -> /guide/getting-started</span></span></code></pre><h2 id="linking-between-pages" class="pp-heading">Linking between pages<a class="pp-heading-anchor" href="#linking-between-pages" aria-label="Link to this section">#</a></h2>
66
- <p>Use absolute or relative links. The recommended style is to omit file extensions:</p>
67
- <pre class="shiki shiki-themes github-light github-dark" style="background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8" tabindex="0"><code><span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8">[</span><span style="color:#032F62;--shiki-light-text-decoration:underline;--shiki-dark:#DBEDFF;--shiki-dark-text-decoration:underline">Getting Started</span><span style="color:#24292E;--shiki-dark:#E1E4E8">](</span><span style="color:#24292E;--shiki-light-text-decoration:underline;--shiki-dark:#E1E4E8;--shiki-dark-text-decoration:underline">/guide/getting-started</span><span style="color:#24292E;--shiki-dark:#E1E4E8">)</span></span>
68
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8">[</span><span style="color:#032F62;--shiki-light-text-decoration:underline;--shiki-dark:#DBEDFF;--shiki-dark-text-decoration:underline">Routing</span><span style="color:#24292E;--shiki-dark:#E1E4E8">](</span><span style="color:#24292E;--shiki-light-text-decoration:underline;--shiki-dark:#E1E4E8;--shiki-dark-text-decoration:underline">./routing</span><span style="color:#24292E;--shiki-dark:#E1E4E8">)</span></span>
69
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8">[</span><span style="color:#032F62;--shiki-light-text-decoration:underline;--shiki-dark:#DBEDFF;--shiki-dark-text-decoration:underline">Home</span><span style="color:#24292E;--shiki-dark:#E1E4E8">](</span><span style="color:#24292E;--shiki-light-text-decoration:underline;--shiki-dark:#E1E4E8;--shiki-dark-text-decoration:underline">../</span><span style="color:#24292E;--shiki-dark:#E1E4E8">)</span></span></code></pre><p>Avoid linking directly to generated HTML or source Markdown:</p>
70
- <pre class="shiki shiki-themes github-light github-dark" style="background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8" tabindex="0"><code><span class="line"><span style="color:#6A737D;--shiki-dark:#6A737D">&#x3C;!-- Avoid --></span></span>
71
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8">[</span><span style="color:#032F62;--shiki-light-text-decoration:underline;--shiki-dark:#DBEDFF;--shiki-dark-text-decoration:underline">Getting Started</span><span style="color:#24292E;--shiki-dark:#E1E4E8">](</span><span style="color:#24292E;--shiki-light-text-decoration:underline;--shiki-dark:#E1E4E8;--shiki-dark-text-decoration:underline">/guide/getting-started.md</span><span style="color:#24292E;--shiki-dark:#E1E4E8">)</span></span>
72
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8">[</span><span style="color:#032F62;--shiki-light-text-decoration:underline;--shiki-dark:#DBEDFF;--shiki-dark-text-decoration:underline">Getting Started</span><span style="color:#24292E;--shiki-dark:#E1E4E8">](</span><span style="color:#24292E;--shiki-light-text-decoration:underline;--shiki-dark:#E1E4E8;--shiki-dark-text-decoration:underline">/guide/getting-started.html</span><span style="color:#24292E;--shiki-dark:#E1E4E8">)</span></span></code></pre><p><code>preactpress check</code> validates local Markdown links that use <code>.md</code>, <code>.mdx</code>, or <code>.html</code> extensions and reports missing pages.</p>
73
- <h2 id="locale-routes" class="pp-heading">Locale routes<a class="pp-heading-anchor" href="#locale-routes" aria-label="Link to this section">#</a></h2>
74
- <p>PreactPress supports VitePress-style locale folders. Keep the default language at the root and put translations in locale folders:</p>
75
- <pre class="shiki shiki-themes github-light github-dark" style="background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8" tabindex="0"><code><span class="line"><span>index.md -> /</span></span>
76
- <span class="line"><span>guide/getting-started.md -> /guide/getting-started</span></span>
77
- <span class="line"><span>de/index.md -> /de</span></span>
78
- <span class="line"><span>de/guide/getting-started.md -> /de/guide/getting-started</span></span></code></pre><p>Configure locale labels, language codes, and locale-specific nav in <code>.preactpress/config.ts</code>:</p>
79
- <pre class="shiki shiki-themes github-light github-dark" style="background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8" tabindex="0"><code><span class="line"><span style="color:#D73A49;--shiki-dark:#F97583">export</span><span style="color:#D73A49;--shiki-dark:#F97583"> default</span><span style="color:#24292E;--shiki-dark:#E1E4E8"> {</span></span>
80
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8"> locales: {</span></span>
81
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8"> root: {</span></span>
82
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8"> label: </span><span style="color:#032F62;--shiki-dark:#9ECBFF">'English'</span><span style="color:#24292E;--shiki-dark:#E1E4E8">,</span></span>
83
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8"> lang: </span><span style="color:#032F62;--shiki-dark:#9ECBFF">'en'</span></span>
84
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8"> },</span></span>
85
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8"> de: {</span></span>
86
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8"> label: </span><span style="color:#032F62;--shiki-dark:#9ECBFF">'Deutsch'</span><span style="color:#24292E;--shiki-dark:#E1E4E8">,</span></span>
87
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8"> lang: </span><span style="color:#032F62;--shiki-dark:#9ECBFF">'de'</span><span style="color:#24292E;--shiki-dark:#E1E4E8">,</span></span>
88
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8"> link: </span><span style="color:#032F62;--shiki-dark:#9ECBFF">'/de/'</span></span>
89
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8"> }</span></span>
90
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8"> }</span></span>
91
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8">}</span></span></code></pre><p>The default theme shows a language switcher when multiple locales are configured.</p>
92
- <h2 id="tag-routes" class="pp-heading">Tag routes<a class="pp-heading-anchor" href="#tag-routes" aria-label="Link to this section">#</a></h2>
93
- <p>Pages can define tags in frontmatter:</p>
94
- <pre class="shiki shiki-themes github-light github-dark" style="background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8" tabindex="0"><code><span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8">---</span></span>
95
- <span class="line"><span style="color:#22863A;--shiki-dark:#85E89D">title</span><span style="color:#24292E;--shiki-dark:#E1E4E8">: </span><span style="color:#032F62;--shiki-dark:#9ECBFF">Release notes</span></span>
96
- <span class="line"><span style="color:#22863A;--shiki-dark:#85E89D">tags</span><span style="color:#24292E;--shiki-dark:#E1E4E8">: [</span><span style="color:#032F62;--shiki-dark:#9ECBFF">release</span><span style="color:#24292E;--shiki-dark:#E1E4E8">, </span><span style="color:#032F62;--shiki-dark:#9ECBFF">changelog</span><span style="color:#24292E;--shiki-dark:#E1E4E8">]</span></span>
97
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8">---</span></span></code></pre><p>Each tag receives an index page:</p>
98
- <pre class="shiki shiki-themes github-light github-dark" style="background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8" tabindex="0"><code><span class="line"><span>release -> /tags/release</span></span>
99
- <span class="line"><span>changelog -> /tags/changelog</span></span></code></pre><p>For localized content, tag pages are scoped to the locale:</p>
100
- <pre class="shiki shiki-themes github-light github-dark" style="background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8" tabindex="0"><code><span class="line"><span>de/guide/intro.md with tag "Markdown" -> /de/tags/markdown</span></span></code></pre><p>If a real Markdown or MDX page exists at the same route as a generated tag index, the real page wins.</p>
101
- <h2 id="base-path" class="pp-heading">Base path<a class="pp-heading-anchor" href="#base-path" aria-label="Link to this section">#</a></h2>
102
- <p>Use <code>site.base</code> when the site is served from a subpath, for example GitHub Pages project sites:</p>
103
- <pre class="shiki shiki-themes github-light github-dark" style="background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8" tabindex="0"><code><span class="line"><span style="color:#D73A49;--shiki-dark:#F97583">export</span><span style="color:#D73A49;--shiki-dark:#F97583"> default</span><span style="color:#24292E;--shiki-dark:#E1E4E8"> {</span></span>
104
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8"> site: {</span></span>
105
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8"> base: </span><span style="color:#032F62;--shiki-dark:#9ECBFF">'/my-repo/'</span></span>
106
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8"> }</span></span>
107
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8">}</span></span></code></pre><p>You can also override it for one build:</p>
108
- <pre class="shiki shiki-themes github-light github-dark" style="background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8" tabindex="0"><code><span class="line"><span style="color:#6F42C1;--shiki-dark:#B392F0">pnpm</span><span style="color:#032F62;--shiki-dark:#9ECBFF"> exec</span><span style="color:#032F62;--shiki-dark:#9ECBFF"> preactpress</span><span style="color:#032F62;--shiki-dark:#9ECBFF"> build</span><span style="color:#005CC5;--shiki-dark:#79B8FF"> --base</span><span style="color:#032F62;--shiki-dark:#9ECBFF"> /my-repo/</span></span></code></pre><h2 id="route-rewrites" class="pp-heading">Route rewrites<a class="pp-heading-anchor" href="#route-rewrites" aria-label="Link to this section">#</a></h2>
109
- <p>Map a public URL to existing content without duplicating files:</p>
110
- <pre class="shiki shiki-themes github-light github-dark" style="background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8" tabindex="0"><code><span class="line"><span style="color:#D73A49;--shiki-dark:#F97583">export</span><span style="color:#D73A49;--shiki-dark:#F97583"> default</span><span style="color:#24292E;--shiki-dark:#E1E4E8"> {</span></span>
111
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8"> rewrites: {</span></span>
112
- <span class="line"><span style="color:#032F62;--shiki-dark:#9ECBFF"> '/docs'</span><span style="color:#24292E;--shiki-dark:#E1E4E8">: </span><span style="color:#032F62;--shiki-dark:#9ECBFF">'/guide'</span><span style="color:#24292E;--shiki-dark:#E1E4E8">,</span></span>
113
- <span class="line"><span style="color:#032F62;--shiki-dark:#9ECBFF"> '/getting-started'</span><span style="color:#24292E;--shiki-dark:#E1E4E8">: </span><span style="color:#032F62;--shiki-dark:#9ECBFF">'/guide/intro'</span></span>
114
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8"> }</span></span>
115
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8">}</span></span></code></pre><p>Keys are the routes visitors use; values must point at routes that already exist from your Markdown files. <code>preactpress check</code> validates rewrite sources and collisions.</p>
116
- <h2 id="clean-urls-and-hosting" class="pp-heading">Clean URLs and hosting<a class="pp-heading-anchor" href="#clean-urls-and-hosting" aria-label="Link to this section">#</a></h2>
117
- <table>
118
- <thead>
119
- <tr>
120
- <th><code>cleanUrls</code></th>
121
- <th>Output for <code>/about</code></th>
122
- <th>Typical host</th>
123
- </tr>
124
- </thead>
125
- <tbody>
126
- <tr>
127
- <td><code>true</code> (default)</td>
128
- <td><code>dist/about/index.html</code></td>
129
- <td>Netlify, Vercel, Cloudflare Pages, GitHub Pages</td>
130
- </tr>
131
- <tr>
132
- <td><code>false</code></td>
133
- <td><code>dist/about.html</code></td>
134
- <td>Static buckets without directory index support</td>
135
- </tr>
136
- </tbody>
137
- </table>
138
- <pre class="shiki shiki-themes github-light github-dark" style="background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8" tabindex="0"><code><span class="line"><span style="color:#D73A49;--shiki-dark:#F97583">export</span><span style="color:#D73A49;--shiki-dark:#F97583"> default</span><span style="color:#24292E;--shiki-dark:#E1E4E8"> {</span></span>
139
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8"> cleanUrls: </span><span style="color:#005CC5;--shiki-dark:#79B8FF">false</span></span>
140
- <span class="line"><span style="color:#24292E;--shiki-dark:#E1E4E8">}</span></span></code></pre><p>Most modern static hosts work with the default. Set <code>cleanUrls: false</code> only when your host cannot resolve <code>/about</code> to <code>about/index.html</code>.</p>
141
- <h2 id="current-limitations" class="pp-heading">Current limitations<a class="pp-heading-anchor" href="#current-limitations" aria-label="Link to this section">#</a></h2>
142
- <p>PreactPress intentionally keeps routing small. Compared with VitePress, it does not currently include:</p>
143
- <table>
144
- <thead>
145
- <tr>
146
- <th>Feature</th>
147
- <th>Status</th>
148
- </tr>
149
- </thead>
150
- <tbody>
151
- <tr>
152
- <td>Dynamic routes such as <code>[pkg].paths.ts</code></td>
153
- <td>Not supported</td>
154
- </tr>
155
- <tr>
156
- <td>Pattern-based rewrites with params</td>
157
- <td>Not supported</td>
158
- </tr>
159
- </tbody>
160
- </table>
161
- <p>If your site needs many generated pages from external data, generate Markdown or MDX files before running <code>preactpress build</code>.</p>
162
- </div><nav class="hn-pager" aria-label="Page navigation"><a class="previous" href="/guide/getting-started"><span>Previous</span>Getting Started</a><a class="next" href="/guide/deploy"><span>Next</span>Deploy</a></nav><footer class="hn-doc-meta"><span>Updated Jun 5, 2026</span></footer></article></main><aside class="hn-outline" aria-label="On this page"><div class="hn-outline-panel"><h2>On this page</h2><ul><li class="level-2"><a href="#file-based-routing">File-based routing</a></li><li class="level-2"><a href="#project-root-and-source-directory">Project root and source directory</a></li><li class="level-2"><a href="#linking-between-pages">Linking between pages</a></li><li class="level-2"><a href="#locale-routes">Locale routes</a></li><li class="level-2"><a href="#tag-routes">Tag routes</a></li><li class="level-2"><a href="#base-path">Base path</a></li><li class="level-2"><a href="#route-rewrites">Route rewrites</a></li><li class="level-2"><a href="#clean-urls-and-hosting">Clean URLs and hosting</a></li><li class="level-2"><a href="#current-limitations">Current limitations</a></li></ul></div></aside></div><footer class="hn-footer">Built with PreactPress.</footer></div></div>
163
- <script type="module" crossorigin src="/assets/main-Bqi-VFEk.js"></script>
164
- </body>
165
- </html>