アセットの取り扱い
静的アセットの参照
すべての Markdown ファイルは Vue コンポーネントにコンパイルされ、Vite によって処理されます。Markdown 内では、相対 URL を使ってアセットを参照することが 推奨されます。

Markdown ファイル内、テーマの *.vue
コンポーネント内、スタイルや通常の .css
ファイル内でも、アセットはプロジェクトルートを基準とした絶対パス、またはファイルシステムを基準とした相対パスで参照できます。後者は Vite、Vue CLI、あるいは webpack の file-loader
を使ったことがある場合に慣れ親しんだ挙動です。
一般的な画像、メディア、フォントファイルタイプは自動的にアセットとして検出され、含まれます。
リンクされたファイルはアセットとして扱われません
Markdown ファイル内のリンクで参照された PDF やその他のドキュメントは、自動的にアセットとして扱われません。これらのリンクファイルにアクセスできるようにするには、手動でプロジェクトの public
ディレクトリに配置する必要があります。
絶対パスを含むすべての参照されたアセットは、プロダクションビルド時にハッシュ化されたファイル名で出力ディレクトリにコピーされます。参照されないアセットはコピーされません。4kb 未満の画像アセットは base64 としてインライン化されます(これは vite
設定オプションで変更可能です)。
すべての 静的な パス参照(絶対パスを含む)は、作業ディレクトリの構造を基準にする必要があります。
Public ディレクトリ
Markdown やテーマコンポーネントで直接参照されない静的アセットを提供する必要がある場合や、特定のファイルをオリジナルのファイル名のまま提供したい場合があります。
例えば robots.txt
、favicon、PWA 用アイコンなどです。
これらのファイルは ソースディレクトリ 配下の public
ディレクトリに配置できます。たとえばプロジェクトルートが ./docs
で、デフォルトのソースディレクトリを使用している場合、public
ディレクトリは ./docs/public
になります。
public
に配置されたアセットは、出力ディレクトリのルートにそのままコピーされます。
なお、public
内のファイルはルート絶対パスで参照する必要があります。例えば public/icon.png
は常に /icon.png
として参照しなければなりません。
ベース URL
サイトをルート以外の URL にデプロイする場合、.vitepress/config.js
で base
オプションを設定する必要があります。
例えば https://foo.github.io/bar/
にデプロイする場合、base
は '/bar/'
と設定します(必ずスラッシュで開始・終了する必要があります)。
すべての静的アセットパスは base
設定値に応じて自動的に調整されます。
例えば Markdown 内で public
配下のアセットを絶対参照した場合:

この場合は base
の設定値を変更しても、参照を修正する必要はありません。
ただし、テーマコンポーネントで動的にアセットをリンクする場合(例:テーマ設定値に基づいた画像の src
)は注意が必要です。
<img :src="theme.logoPath" />
この場合は、VitePress が提供する withBase
ヘルパー でパスをラップすることを推奨します。
<script setup>
import { withBase, useData } from 'vitepress'
const { theme } = useData()
</script>
<template>
<img :src="withBase(theme.logoPath)" />
</template>