NOTE (2022-04-18): 現在の Gatsby のバージョンは v4 だが、このサイトは v2 を使い続けている。管理者のフロントエンド力の足りなさにより、v4 にアップグレードできないでいる。Netflify でのデプロイは .nvmrc
で古い Node のバージョンを指定することで動かし続けているが、ローカルでは $ gatsby [develop|build]
できなくなっている。他の (自力で管理する必要のない) サービスに移行するべきか。。?
- Gatsby
- gatsby-starter-lumen
- Netlify
- 自動デプロイ
- Algolia
- サイト内検索
- Simple Icons
- GitHub や Twitter のアイコン
$ gatsby develop
: マークダウン等の変更がすぐに反映されるが、反映されない変更があったり、実際のサイトの挙動と異なることがある$ gatsby clean; gatsby build; gatsby serve
: Production ディレクトリ (public/
) を生成する。clean
はしなくてもよいが、その場合変更が反映されない可能性があるgatsby-config.js
でgatsby-plugin-algolia
プラグインが指定されていると、ビルドのたびに Algolia の検索インデックスが生成される。キーも消費するので、頻繁にビルドする場合は先にコメントアウトしておく
- GitHub にプッシュすると自動で Netlify でデプロイされる
- Netlify で
yarn.lcok
が必要な場合は$ yarn install --ignore-engines
試行錯誤した結果、ページ中にはラスター画像 + リンク先で Plotly で出力した HTML を表示、という方式を採用した。最初は HTML を記事に埋め込みたかったが、結果的にはサイズの大きいプロットはロードに時間がかかってしまうので、むしろこのやり方が良かったのではと思ってる。
HTML と画像はstatic/plotly/
以下に置くことにした。gatsby-remark-copy-linked-files
を使うとcontent/posts/記事名/
にindex.md
と一緒に置けるが、ビルド時間が長くなったり、(少なくとも gatsby-starter-lumen では) ポストの URL をうまく扱えなかったりしたので断念。
gatsby-plugin-catch-links
プラグインが必要。
- Plotly で HTML 形式のプロットを出力
- HTML の
head
に<script src="https://cdn.plot.ly/plotly-latest.min.js">
を追記 - プロットの画像をスクリーンショットなりで生成
- HTML と画像ファイルの両方を上の
static/plotly
ディレクトリに置く - マークダウンのプロットを挿入したい場所に
<a href="/plotly/HTMLファイル名" target="_blank" rel="noopener noreferrer"><img src="/plotly/画像ファイル名"></a>
と記述
将来的にはマークダウンの frontmatter にplotly: true
とするとその記事のhead
でplotly.js
を読み込み、interactive plot を記事中に挿入するようにしたいが、どうも React と相性が悪くて面倒そう。
通常 Algolia のキーを.env
ファイル中で指定するが、admin key は GitHub にアップロードしたくない。しかしアップロードしないと Netlify から見えずビルドできない。
そこで、Netlify のデプロイ設定画面で、ビルドに使用する環境設定を直に定義する。.env
にあるものをそのまま列挙すればよい。