Open14
MkDocsの使い方
MkDocs
- 言語: Python
- テンプレート形式: Jinja2
- コンテンツ形式: reStructuredtext、Markdown
インストール
$ pip3 install mkdocs
$ pipx install mkdocs
$ uv tool install mkdocs
$ brew install mkdocs
新規作成
$ mkdocs new PROJECT_NAME
INFO - Creating project directory: PROJECT_NAME
INFO - Writing config file: PROJECT_NAME/mkdocs.yml
INFO - Writing initial docs: PROJECT_NAME/docs/index.md
$ ls PROJECT_NAME
mkdocs.yml
docs/
-
mkdocs new プロジェクト名
で新規作成- 「プロジェクト名」のディレクトリが作成される
- その中に
mkdocs.yml
とdocs/
ディレクトリが作成される-
mkdocs.yml
: 設定ファイル -
docs
: コンテンツを格納するディレクトリ
-
-
mkdocs new .
すると既存のプロジェクトに追加できる- カレントディレクトリに
mkdocs.yml
とdocs/
ディレクトリが作成される
- カレントディレクトリに
- 「プロジェクト名」を指定しないとエラーになる
プレビュー
$ cd プロジェクト名
$ mkdocs serve --open
INFO - Building documentation...
INFO - Cleaning site directory
INFO - Documentation built in 0.04 seconds
INFO - [11:33:53] Watching paths for changes: 'docs', 'mkdocs.yml'
INFO - [11:33:53] Serving on http://127.0.0.1:8000/
-
mkdocs.yml
があるディレクトリに移動する -
mkdocs serve
でローカルサーバーが起動しライブプレビューできる -
--open
オプションでブラウザが起動する
ビルド
$ mkdocs build
mkdocs build
INFO - Cleaning site directory
INFO - Building documentation to directory:PROJECT_NAME/site
INFO - Documentation built in 0.03 seconds
$ ls
mkdocs.yml
docs/
site/
-
mkdocs build
で静的ファイルを生成する - 静的ファイルは
site
ディレクトリの中に作成される-
site
ディレクトリは.gitignore
したほうがよい
-
mkdocs.yml
)
設定ファイル(# Project information
site_name: サイト名
site_url: ウェブサイトのカノニカルなURL
repo_url: リポジトリのURL
repo_name: # "GitHub" / "Bitbucket" / "GitLab"
edit_uri:
edit_uri_template:
site_description:
site_author:
copyright:
remote_branch: "gh-pages"
remote_name: "origin"
# Documentation Layout
nav:
- Home: index.md
- About: about.md
exclude_docs:
draft_docs:
not_in_nav:
validation:
# Build Directories
theme:
name: readthedocs # or mkdocs
locale: ja
docs_dir: docs
site_dir: site
extra_css: []
extra_javascript: []
extra_templates: []
extra: {}
# Preview Controls
watch:
use_directory_urls: true # pretty_url / ugly_url に相当
strict: false
dev_addr: "127.0.0.1:8000"
# Formatting Options
markdown_extensions:
- smarty
- toc:
permalink: true
separator: "-"
- sane_lists
hooks:
plugins: ["search"]
-
mkdocs.yml
にサイト設定を記述する -
theme
はmkdocs
orreadthedocs
から選ぶ- (追加・拡張する方法はあとで調べる)
MkDocsカタログ
- mkdocs関係のパッケージのリスト用リポジトリ
- まず、この中から目的にあったパッケージを探してみるとよさそう
Material for MkDocs の設定
- まずはこの
minimal configuration
を参考にtheme
をMaterial for MkDocsに設定する - その後、その下にある
Advanced configuration
から必要な設定を追加する
Markdown Extensions
- デフォルトでは、コードブロックがシンタックス・ハイライトされない
- なのでMadkdown Extensions は設定したほうがよい
-
Python Markdown
とPython Markdown Extensions
の2種類のセクション設定がある - まず
minimal configuration
を設定してコードブロックがきちんと表示されるかを確認し、反映されていればrecommanded configuration
を全部盛りすればOK - あとは、ドキュメントにある説明と設定方法を確認し、取捨選択する
i18n
- メインの言語を設定する
theme:
language: ja
- 多言語を設定する
theme:
language: ja
extra:
alternate:
- name: English
link: /en/ # <- 絶対パスにする
lang: en
- name: Deutsch
link: /de/
lang: de
ディレクトリの構造
- 言語ごとにサブディレクトリを作成する
- その中に翻訳コンテンツを作成する
mkdocs.yaml
docs/
|-- index.md
|-- en/index.md
|-- de/index.md
Social card plugin
$ pip3 install "mkdocs-material[imaging]"
$ uv add "mkdocs-material[imaging]"
$ brew install cairo freetype libffi libjpeg libpng zlib
$ brew install pngquant
// bash
$ export DYLD_FALLBACK_LIBRARY_PATH=/opt/homebrew/lib
// fish
$ set -x DYLD_FALLBACK_LIBRARY_PATH=/opt/homebrew/lib
ブログ設定
- ビルトインの
blog
プラグインを利用する(追加パッケージは不要)- ただし、RSSを追加する場合は追加パッケージが必要
ディレクトリ構造
|-- mkdocs.yaml
|-- docs/
|-- index.md
|-- about/
|-- blog/
|-- index.md
|-- posts/
|-- この中に記事を配置する
|-- 2024/
|-- サブディレクトリ/index.md
-
blog
プラグインを有効にしてビルド(or プレビュー)すると、docs/blog/index.md
が作成される - その中に
docs/blog/posts/
の空ディレクトリも作成される。ユーザーはこの中に記事ファイルを作成する必要がある- ドキュメントをきちんと読まずに、
blog/
の下に記事ファイルを作成して、うまくいかないなと悩みました
- ドキュメントをきちんと読まずに、