デフォルトテーマの設定
テーマ設定では、テーマのカスタマイズができます。設定ファイルの themeConfig
オプションで定義します。
export default {
lang: 'en-US',
title: 'VitePress',
description: 'Vite & Vue powered static site generator.',
// テーマ関連の設定
themeConfig: {
logo: '/logo.svg',
nav: [...],
sidebar: { ... }
}
}
このページで説明するオプションは、デフォルトテーマにのみ適用されます。 テーマによって期待する設定は異なります。カスタムテーマを使用する場合、ここで定義したテーマ設定オブジェクトはテーマへ渡され、テーマ側がそれに基づいて条件付きの挙動を定義できます。
i18nRouting
- 型:
boolean
ロケールを zh
のように切り替えると、URL は /foo
(または /en/foo/
)から /zh/foo
に変わります。themeConfig.i18nRouting
を false
に設定すると、この挙動を無効化できます。
logo
- 型:
ThemeableImage
サイトタイトルの直前に、ナビゲーションバーに表示されるロゴ。パス文字列、またはライト/ダークモードで異なるロゴを設定するオブジェクトを受け取ります。
export default {
themeConfig: {
logo: '/logo.svg'
}
}
type ThemeableImage =
| string
| { src: string; alt?: string }
| { light: string; dark: string; alt?: string }
siteTitle
- 型:
string | false
ナビゲーション内の既定サイトタイトル(アプリ設定の title
)を置き換えます。false
の場合、ナビのタイトルを非表示にします。ロゴ自体にサイト名が含まれている場合に便利です。
export default {
themeConfig: {
siteTitle: 'Hello World'
}
}
nav
- 型:
NavItem
ナビゲーションメニューの設定。デフォルトテーマ: ナビ を参照してください。
export default {
themeConfig: {
nav: [
{ text: 'Guide', link: '/guide' },
{
text: 'Dropdown Menu',
items: [
{ text: 'Item A', link: '/item-1' },
{ text: 'Item B', link: '/item-2' },
{ text: 'Item C', link: '/item-3' }
]
}
]
}
}
type NavItem = NavItemWithLink | NavItemWithChildren
interface NavItemWithLink {
text: string
link: string | ((payload: PageData) => string)
activeMatch?: string
target?: string
rel?: string
noIcon?: boolean
}
interface NavItemChildren {
text?: string
items: NavItemWithLink[]
}
interface NavItemWithChildren {
text?: string
items: (NavItemChildren | NavItemWithLink)[]
activeMatch?: string
}
sidebar
- 型:
Sidebar
サイドバーメニューの設定。デフォルトテーマ: サイドバー を参照してください。
export default {
themeConfig: {
sidebar: [
{
text: 'Guide',
items: [
{ text: 'Introduction', link: '/introduction' },
{ text: 'Getting Started', link: '/getting-started' },
...
]
}
]
}
}
export type Sidebar = SidebarItem[] | SidebarMulti
export interface SidebarMulti {
[path: string]: SidebarItem[] | { items: SidebarItem[]; base: string }
}
export type SidebarItem = {
/**
* 項目のテキストラベル
*/
text?: string
/**
* 項目のリンク
*/
link?: string
/**
* 子項目
*/
items?: SidebarItem[]
/**
* 指定しない場合、グループは折りたたみ不可。
*
* `true` なら折りたたみ可能でデフォルト折りたたみ
*
* `false` なら折りたたみ可能だがデフォルト展開
*/
collapsed?: boolean
/**
* 子項目のベースパス
*/
base?: string
/**
* 前/次リンクのフッターに表示するテキストをカスタマイズ
*/
docFooterText?: string
rel?: string
target?: string
}
aside
- 型:
boolean | 'left'
- 既定値:
true
- ページごとに frontmatter で上書き可能
false
でサイドコンテナの描画を無効化。true
で右側に表示。left
で左側に表示。
すべてのビューポートで無効にしたい場合は、代わりに outline: false
を使用してください。
outline
- 型:
Outline | Outline['level'] | false
- レベルはページごとに frontmatter で上書き可能
false
でアウトラインコンテナの描画を無効化。詳細は以下を参照:
interface Outline {
/**
* アウトラインに表示する見出しレベル
* 単一の数値なら、そのレベルのみ表示
* タプルなら最小レベルと最大レベル
* `'deep'` は `[2, 6]` と同じ(`<h2>` 〜 `<h6>` を表示)
*
* @default 2
*/
level?: number | [number, number] | 'deep'
/**
* アウトラインに表示するタイトル
*
* @default 'On this page'
*/
label?: string
}
socialLinks
- 型:
SocialLink[]
ナビゲーションにアイコン付きのソーシャルリンクを表示します。
export default {
themeConfig: {
socialLinks: [
// simple-icons (https://simpleicons.org/) の任意のアイコンを指定可能
{ icon: 'github', link: 'https://github.com/vuejs/vitepress' },
{ icon: 'twitter', link: '...' },
// SVG 文字列を渡してカスタムアイコンも可
{
icon: {
svg: '<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Dribbble</title><path d="M12...6.38z"/></svg>'
},
link: '...',
// アクセシビリティ向けにカスタムラベルも指定可(推奨)
ariaLabel: 'cool link'
}
]
}
}
interface SocialLink {
icon: string | { svg: string }
link: string
ariaLabel?: string
}
footer
- 型:
Footer
- ページごとに frontmatter で上書き可能
フッター設定。メッセージや著作権表示を追加できますが、ページにサイドバーがある場合はデザイン上表示されません。
export default {
themeConfig: {
footer: {
message: 'Released under the MIT License.',
copyright: 'Copyright © 2019-present Evan You'
}
}
}
export interface Footer {
message?: string
copyright?: string
}
editLink
- 型:
EditLink
- ページごとに frontmatter で上書き可能
「このページを編集」リンクを表示します(GitHub/GitLab など)。詳細は デフォルトテーマ: 編集リンク を参照。
export default {
themeConfig: {
editLink: {
pattern: 'https://github.com/vuejs/vitepress/edit/main/docs/:path',
text: 'Edit this page on GitHub'
}
}
}
export interface EditLink {
pattern: string
text?: string
}
lastUpdated
- 型:
LastUpdatedOptions
最終更新の文言と日付フォーマットをカスタマイズします。
export default {
themeConfig: {
lastUpdated: {
text: 'Updated at',
formatOptions: {
dateStyle: 'full',
timeStyle: 'medium'
}
}
}
}
export interface LastUpdatedOptions {
/**
* @default 'Last updated'
*/
text?: string
/**
* @default
* { dateStyle: 'short', timeStyle: 'short' }
*/
formatOptions?: Intl.DateTimeFormatOptions & { forceLocale?: boolean }
}
algolia
- 型:
AlgoliaSearch
Algolia DocSearch によるサイト内検索の設定。デフォルトテーマ: 検索 を参照。
export interface AlgoliaSearchOptions extends DocSearchProps {
locales?: Record<string, Partial<DocSearchProps>>
}
完全なオプションはこちら。
carbonAds
- 型:
CarbonAdsOptions
Carbon Ads を表示します。
export default {
themeConfig: {
carbonAds: {
code: 'your-carbon-code',
placement: 'your-carbon-placement'
}
}
}
export interface CarbonAdsOptions {
code: string
placement: string
}
詳細は デフォルトテーマ: Carbon Ads を参照。
docFooter
- 型:
DocFooter
前/次リンクの上に表示される文言をカスタマイズします。英語以外のドキュメントで便利。前/次リンク自体をグローバルに無効化することも可能。ページごとに切り替えたい場合は frontmatter を使用します。
export default {
themeConfig: {
docFooter: {
prev: 'Pagina prior',
next: 'Proxima pagina'
}
}
}
export interface DocFooter {
prev?: string | false
next?: string | false
}
darkModeSwitchLabel
- 型:
string
- 既定値:
Appearance
ダークモード切替スイッチのラベル(モバイル表示のみ)をカスタマイズします。
lightModeSwitchTitle
- 型:
string
- 既定値:
Switch to light theme
ホバー時に表示されるライトモード切替のタイトルをカスタマイズします。
darkModeSwitchTitle
- 型:
string
- 既定値:
Switch to dark theme
ホバー時に表示されるダークモード切替のタイトルをカスタマイズします。
sidebarMenuLabel
- 型:
string
- 既定値:
Menu
サイドバーメニューのラベル(モバイル表示のみ)をカスタマイズします。
returnToTopLabel
- 型:
string
- 既定値:
Return to top
トップに戻るボタンのラベル(モバイル表示のみ)をカスタマイズします。
langMenuLabel
- 型:
string
- 既定値:
Change language
ナビバーの言語切替ボタンの aria-label をカスタマイズします。i18n を使う場合に有効です。
skipToContentLabel
- 型:
string
- 既定値:
Skip to content
コンテンツへスキップリンクのラベルをカスタマイズします。キーボード操作時に表示されます。
externalLinkIcon
- 型:
boolean
- 既定値:
false
Markdown 内の外部リンクの横に外部リンクアイコンを表示するかどうか。
useLayout
composable
レイアウト関連のデータを返します。返り値の型は次のとおりです。
interface {
isHome: ComputedRef<boolean>
sidebar: Readonly<ShallowRef<DefaultTheme.SidebarItem[]>>
sidebarGroups: ComputedRef<DefaultTheme.SidebarItem[]>
hasSidebar: ComputedRef<boolean>
isSidebarEnabled: ComputedRef<boolean>
hasAside: ComputedRef<boolean>
leftAside: ComputedRef<boolean>
headers: Readonly<ShallowRef<DefaultTheme.OutlineItem[]>>
hasLocalNav: ComputedRef<boolean>
}
例:
<script setup>
import { useLayout } from 'vitepress/theme'
const { hasSidebar } = useLayout()
</script>
<template>
<div v-if="hasSidebar">サイドバーがあるときだけ表示</div>
</template>