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

カテゴリー:  Tech タグ:  cloud

CloudFlare

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.pyMARKDOWN_EXTENSIONSmarkdown_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[終了];

これでインラインで作図することができるようなりました。


  1. このブログはNikolaを使用しています. 

コメント

Comments powered by Disqus