/
githubmirror
/
bootstrap
Обзор
Документация
Войти
/
githubmirror
/
bootstrap
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
site/src/pages/[...alias].astro
56 строк
2 KB
Julien Déramond
Docs: migration from Hugo to Astro (#41251)
15 апр 2025, 19:37
Не верифицирован
15 апр 2025, 19:37
a8ab199
Код
Авторство
О чём код?
--- import type { InferGetStaticPropsType } from 'astro' import RedirectLayout from '@layouts/RedirectLayout.astro' import { getVersionedDocsPath } from '@libs/path' import { trimLeadingAndTrailingSlashes } from '@libs/utils' import { replaceConfigInText } from '@libs/remark' import { aliasedDocsPages } from '@libs/content' import { getAliasedExamplesPages, getExampleNameFromPagePath } from '@libs/examples' export async function getStaticPaths() { function normalizeAliases(aliases: string | string[] | undefined): string[] { return aliases ? (Array.isArray(aliases) ? aliases : [aliases]) : [] } function getAliasStaticPath(alias: string, path: string) { return { params: { alias: trimLeadingAndTrailingSlashes(replaceConfigInText(alias)) }, props: { path } } } const staticPaths = [] const examplesPageModules = import.meta.glob('../assets/examples/**/*.astro', { eager: true }) const examplesPages = Object.entries(examplesPageModules).map(([file, module]) => { return { file, ...module } }) const aliasedExamplesPages = getAliasedExamplesPages(examplesPages) // Generate static paths for all examples pages with aliases. for (const aliasedExamplesPage of aliasedExamplesPages) { const aliases = normalizeAliases(aliasedExamplesPage.aliases) for (const alias of aliases) { staticPaths.push(getAliasStaticPath(alias, `/examples/${getExampleNameFromPagePath(aliasedExamplesPage.file)}`)) } } // Generate static paths for all docs pages with aliases. for (const aliasedDocsPage of aliasedDocsPages) { const aliases = normalizeAliases(aliasedDocsPage.data.aliases) for (const alias of aliases) { staticPaths.push(getAliasStaticPath(alias, aliasedDocsPage.slug)) } } return staticPaths.flat() } type Props = InferGetStaticPropsType<typeof getStaticPaths> const { path } = Astro.props --- <RedirectLayout path={getVersionedDocsPath(path)} />