unsweets.log

Frontend & Android.

静的生成ツールをHexoからGatsbyに移行した

Published at

近頃かなりブログの更新頻度が落ちているが、それはそれとしてブログの静的生成ツールをHexoからGatsbyに移行した。これを機にちょくちょくブログを更新できるようにしたい。

お知らせ記事として書くつもりだったが、1点ハマりポイントがあったのでそれだけメモ。

Netlifyでビルドすると2回目以降ビルドに失敗する

11:49:06 PM:   Error: spawn /opt/build/repo/node_modules/pngquant-bin/vendor/pngquant ENOENT
11:49:06 PM:
11:49:06 PM:   - child_process.js:240 Process.ChildProcess._handle.onexit
11:49:06 PM:     internal/child_process.js:240:19
11:49:06 PM:
11:49:06 PM:   - child_process.js:415 onErrorNT
11:49:06 PM:     internal/child_process.js:415:16
11:49:06 PM:
11:49:06 PM:   - next_tick.js:63 process._tickCallback
11:49:06 PM:     internal/process/next_tick.js:63:19

pngquant-bin がないとか吐かれる。上記の問題以外でもnode.jsのバージョンが古いなどの理由でビルドエラーが発生することがありがちだったりする。Netlifyは標準のNode.jsのバージョンが古く、また、yarnのバージョンも古いので、これらのバージョンを引き上げる設定をしておかないとビルドエラーになる。

このブログではNetlifyのプロジェクト設定のBuild & Deployから環境変数を以下のように設定した。

NODE_ENV production
NODE_VERSION 8
YARN_VERSION 1.12.3

公式ドキュメントより。上記のエラーはyarnのバージョンが古いことが起因していた(それ以前はnode.jsのバージョンが古く違うビルドエラーが出ていた)。上記の設定は様子を見つつ行ったので少しバージョンが古いが、node.jsのバージョンを10系統にして、yarnも1.13.0を使っても大丈夫なはず。