Migrating from VitePress
Move VitePress Markdown and sidebar config into Shiso.
VitePress and Shiso are both Vite-based static generators, so the build and
deployment story is nearly identical. Content is plain Markdown in both; the
main work is converting VitePress container syntax to MDX components and
moving .vitepress/config.ts into docs.json.
What carries over#
- Content:
.mdpages, GFM tables, frontmattertitleanddescription - Structure: nested folders become nested routes
- Static assets: files from
public/stay inpublic/ - Deployment: static output on any host — same model, different output
directory (
dist/client)
Migration steps#
Move your Markdown files into content/docs and public/ files into
public/. Rename any page using Vue-in-Markdown to .mdx after
converting it (see below).
Translate themeConfig.sidebar into docs.json navigation. Sidebar
sections become groups, link values become page paths:
Top navbar items (themeConfig.nav) become tabs or
navbar.links.
Map title → name, description → description,
themeConfig.logo → logo, themeConfig.socialLinks →
footer.socials or navbar.links.
Rewrite ::: containers as components (see mapping below), then:
Syntax mapping#
| VitePress | Shiso |
|---|---|
::: tip | <Tip> |
::: info | <Info> |
::: warning | <Warning> |
::: danger | <Danger> |
::: details | <Accordion title> |
::: code-group | <CodeGroup> |
[title](link){target} attrs | Plain Markdown links |
<script setup> / Vue components | React MDX — needs rewriting or removal |
For example, a VitePress code group:
becomes:
Frontmatter differences#
| VitePress field | Shiso equivalent |
|---|---|
title, description | Same |
layout: home, hero, features | Write a normal MDX page with <Columns> of <Card>s |
outline | Automatic — right-rail outline is built in |
aside, navbar | No per-page equivalent |
Not carried over#
- Vue components and
<script setup>— Shiso renders React MDX; interactive bits need one of the built-in components or plain Markdown - Custom themes — see Appearance for colors, fonts, and CSS overrides instead
- Local search config — built-in client-side search works with no setup
After the move#
- Deployment — same hosts, publish
dist/client - SEO and redirects — VitePress
.htmlURLs can be redirected to clean paths