NetlifyからCloudFlare Pages移行しました。

Netlify がいつまでたっても新しいPythonをサポートせずPython 3.8止まりなので、 CloudFlare Pagesに移行しました。
ClourFlareへの移行作業
移行自体は、CloudFlareとGitlabを繋いでリポジトリーを指定してビルドが成功したら DNSで向き先を変更するだけなので15分程度です。
ただし、ローカルの環境のPythonやNikola1のバージョンを合わせておく必要が有ります。
まず、CloudFlare PagesのPythonのバージョンは、Language support and toolsのページにちゃんとドキュメントされています。現時点でのPythonのデフォルトは3.11.5です。
一応自分への備忘のためにローカルのファイルで明示的に指定しておきます。CloudFlare PagesではPythonのバージョンは環境変数PYTHON_VERSIONか、ファイル .python-version、または runtime.txtで指定できます。 .python-versionが分かりやすいので Netlifyで使っていた runtime.txtは削除して .python-versonを作成しておきます。
3.11.5
Pythonの仮想環境を一度壊して、新たに整えて requirements.txtを更新します。
rm -rf venv python -m venv venv source venv/bin/activate.fish pip install -U "Nikola[extras] # ブログを生成できることを確認したら rm requirements.txt pip freeze > requirements.txt
makrdown-inline-mermaid の検証
もともとPythonのバージョンを上げたかったのは、markdown-inline-mermaidを使いたかったからなので、検証してみましょう。
pipでmarkdown-inline-mermaidをインストールした後、Nikolaのconf.pyの
MARKDOWN_EXTENSIONSにmarkdown_inline_mermaidを追加します。
MARKDOWN_EXTENSIONS = [ "markdown.extensions.codehilite", "markdown.extensions.extra", "markdown.extensions.fenced_code", "markdown.extensions.admonition", "markdown.extensions.toc", "markdown.extensions.meta", "extra", "admonition", "toc", "markdown_inline_mermaid", ]
markdown-inline-mermaidはmermaid-cliに依存しています。package.jsonで指定しても
うまく導入されないため、CloudFlare pagesのビルドコマンドを以下のように変更します。
npm install -g @mermaid-js/mermaid-cli && nikola build
これでうまくmermaild-cliを呼び出せるようになりました
次のような Mermaidの図の指定をレンダリングしてみましょう。
%%{init: {'theme': 'base', 'themeVariables': { 'width': '800px', 'height': '400px' }}}%%
graph LR;
A[スタート] --> B[プロセス1];
B --> C{条件A};
C -->|yes| D[プロセス2];
C -->|no| E[プロセス3];
D --> F[終了];
E --> F[終了];
これでインラインで作図することができるようなりました。