Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/integration.ts
Original file line number Diff line number Diff line change
Expand Up @@ -574,6 +574,7 @@ export function createDocsSite(options: CreateDocsSiteOptions = {} as CreateDocs
}
process.env.DOCS_BUILD_MODE = mode;
process.env.DOCS_BASE = base ? base.replace(/\/$/, '') : '';
process.env.DOCS_TRAILING_SLASH = (astroExtra.trailingSlash as string) ?? 'ignore';
if (!process.env.DOCS_ENV) {
process.env.DOCS_ENV = mode;
}
Expand Down
11 changes: 9 additions & 2 deletions src/plugins/remark-md-links.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,15 @@
* Remark plugin: rewrite relative .md links to Astro-compatible URLs.
*
* Transforms `[label](./some-page.md)` or `[label](../folder/page.md#section)`
* into root-relative URLs like `/products/.../some-page/` (with DOCS_BASE prepended).
* into root-relative URLs like `/products/.../some-page` (with DOCS_BASE prepended).
*
* Also prepends DOCS_BASE to bare root-relative internal links (e.g. `/grids/grid/...`)
* that are already absolute but missing the site base path.
*
* Respects trailing slash preference via DOCS_TRAILING_SLASH env var, which can be 'always', 'never', or 'ignore'.
* By default both Angular and Xplat astro docs use trailing slash 'never'.
*
* Non-relative links (starting with http://, https://, /, #, or mailto:) and non-.md links are left unchanged.
*/

import { visit } from 'unist-util-visit';
Expand Down Expand Up @@ -36,7 +41,9 @@ function rewriteMdLink(url: string, filePath: string, docsDir: string): string {
const slug = rel.endsWith('.md') ? rel.slice(0, -3) : rel;

const docsBase = (process.env.DOCS_BASE ?? '').replace(/\/$/, '');
return docsBase + '/' + slug.toLowerCase() + '/' + suffix;
const trailingSlash = process.env.DOCS_TRAILING_SLASH ?? 'ignore';
const trail = trailingSlash === 'never' ? '' : '/';
return docsBase + '/' + slug.toLowerCase() + trail + suffix;
Comment thread
ChronosSF marked this conversation as resolved.
}

/** Remark plugin that rewrites relative .md links, prepends DOCS_BASE, and fixes relative image paths. */
Expand Down
Loading