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はmkdocsorreadthedocsから選ぶ- (追加・拡張する方法はあとで調べる)
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/の下に記事ファイルを作成して、うまくいかないなと悩みました
- ドキュメントをきちんと読まずに、