generateLlmsTxt no longer re-reads pages from disk, re-parses
frontmatter, and re-runs include processing with a second markdown
renderer: the markdown to vue transform now collects the
include-expanded source (before llm tags are stripped for the HTML
build) and generateLlmsTxt assembles the output from it.
Allows toggling LLM output generation while keeping the rest of the
options, e.g. `llms: { enabled: !!process.env.CI, ... }`. Also gates
the llm-only/llm-exclude tag processing in the markdown pipeline.
- `llms.ignoreFiles` excludes pages from all LLM output via picomatch
globs, matched against both source and rewritten output paths.
- `<llm-only>` content appears only in the generated markdown; it is
stripped from the rendered HTML. `<llm-exclude>` is the inverse.
Both are processed only when the llms option is enabled.
Replaces vitepress-plugin-llms with the built-in `llms: true` option.
The generator now detects the landing page through rewrites
(en/index.md -> index.md), resolves the sidebar and site metadata
through locale/additional config layers via resolveSiteDataByRoute,
and renders leaf links before nested sections so trailing top-level
links are not misattributed to the previous section heading.
Adds an experimental `llms` config option that emits, at the end of the
build, a raw markdown version of each page (includes expanded, rewrites
applied), an llms.txt index following the sidebar order, and an
llms-full.txt bundle. Root locale only; dynamic routes are skipped.
See https://llmstxt.org/ and vuejs/vitepress#4590
BREAKING CHANGE: `includeFiles` option in `postcssIsolateStyles` now defaults to `[/vp-doc\.css/, /base\.css/]` You can remove explicit `includeFiles` if you were using it just to run it on `vp-doc.css`. To revert back to older behavior pass `includeFiles: [/base\.css/]`. The underlying implementation is changed and `transform` and `exclude` options are no longer supported. Use `postcss-prefix-selector` directly if you've advanced use cases.
BREAKING CHANGES: Internals are modified a bit to better support vite 6 and handle HMR more correctly. For most users this won't need any change on their side.
BREAKING CHANGE: VitePress now runs on Vite 5. Please refer https://vitejs.dev/guide/migration for breaking changes and migration guide if you're relying on some Vite-specific things.