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[終了];
これでインラインで作図することができるようなりました。