posted: 2019/10/23
tomlだと使えなかった正規表現が使えるのでわりとまとめられた(可読性的にどっちが良いかとかは微妙)
コメントがつけられないのやっぱりjson設定ファイルは辛いところ
このブログの配信をnetlifyからnow.shにした話
Netlifyで動かしてたこのブログをnow.shに移管を試している。
理由は下記だ。
理由は下記だ。
- NetlifyCMSを使っていたが、使わなくなってしまった
- 将来的にGatsbyをやめてnext.jsにする可能性が高そう
- Netlifyだいぶ使い込んだので、そろそろ別なブキを覚えたい(重要)
感想としてはこんな感じだった
良い点
- ビルドスピードが早い
- 詳細理由は不明だが、ビルドキャッシュが効いてる?
- Gatsbyのビルドについても、Netlifyだと60s程度かかるところが、now.shだと30s程度で済んでそう
- ビルドだけでなく、前後のオーバーヘッドも含めると結構な差を感じる(nowの方が早い)
- now.shだとエッジとして東京リージョンがあるためか、レスポンスが早そうだった。
- かなり荒っぽい計測だが、1.5倍程度は少なくとも縮まってそう。体感でも感じれる程度?
- APIの機能の好みでいうとnow.shの方式は好き
- 管理画面はnowの方が軽め(netlify若干もっさり感気になる)
- GitHubとの連携・コメント周りはNetlifyの方が親切っぽい
そうでもない点・netlifyの方が良かった点
- ドメイン設定周りはnetlifyの方が圧倒的に親切(後述)
- env設定もGUIで処理できるnetlifyの方が良さげ
- deprecatedな情報が多い(v1系の情報は使えない)
- たまにCLIが混乱させられる
- 設定ファイルはtomlの方がコメント出来て好き
- GitHubのコメントちょっとだけうるさいと感じるときがある
- デプロイ制限が色々いじくってると引っかかりがち
一番最後の「気持ち的に他のも使いたい」が大きいので、Netlifyが悪いという話ではない。
特にNetlify自体は静的サイトを扱うのに特化されていて、機能もそれにあわせた必要十分さなのは改めて強みとして感じている。(Form / ABテスト / Authenticate / ドメイン周り含め)
特にNetlify自体は静的サイトを扱うのに特化されていて、機能もそれにあわせた必要十分さなのは改めて強みとして感じている。(Form / ABテスト / Authenticate / ドメイン周り含め)
速度面についてはもしかしてちょっと利用率が上がりすぎてキューが詰まってるとかはあるのかもしれない
やったこと
redirect
netlify.toml
に書いていた設定をnow.json
へ移植した。tomlだと使えなかった正規表現が使えるのでわりとまとめられた(可読性的にどっちが良いかとかは微妙)
コメントがつけられないのやっぱりjson設定ファイルは辛いところ
"routes": [
{
"src": "/blog/(?<year>201[89])?(?<splat>[01].+)",
"headers": {
"Location": "/blog/$year/$year$splat"
},
"status": 301
},
各サイトのRSSフィードをproxyしているのだが、なぜかqiitaのフィードが通らななってしまったので、ここはAPIを作った
/api/feed/[media].js
というファイルを作るところあたりはnext.jsと一緒(多分どっちかがどっちかに合わせてそう)結構APIは使い勝手が良いので、redirectで処理したりするのをやめてすべてAPIで処理してもよさそうな気配を感じた
devコマンドの調整
普通に起動してしまうとAPIがローカルで動かせない(gatsbyのポートに認識される?)ようなのでgatsbyに対して
$PORT
を割り当てた。結構
now-cli
コマンドがバグっぽい挙動をすることがあるので、:-3000
で初期値を与えてdev
でも動かせるようにした。"start": "now dev",
"dev": "gatsby develop -p ${PORT:-3000}",
他のライブラリであれば、
now init XXXX
でボイラープレートを生成してpackage.json
を参考にすると良いregionの設定
サーバレス機能の部分だけ(そしておそらくデフォルトでも自動選択される)っぽいが、一応設定しておいた
"regions": [
"hnd1"
]
slackのintegration
とりあえずビルド時に通知は来るっぽい。便利
Domain設定周り
結構苦戦させられたのがDomain設定周り。
しばらくaliasに設定したドメインがpushしてもmasterに追従されずに困って
しばらくaliasに設定したドメインがpushしてもmasterに追従されずに困って
$ yarn now alias rm www.terrier.dev
などをして剥がしたり
"alias": [
"now.terrier.dev",
"www.terrier.dev",
"terrier.now.sh"
],
"github": {
"autoAlias": true
},
を
ドキュメントの読み込み不足かもしれないが、正直謎・・・
now.json
に書いたり一度ドメインをremoveして再追加したりしてたらmaster追従されるようになった。ドキュメントの読み込み不足かもしれないが、正直謎・・・
それと、naked domainな
terrier.dev
を利用したかったのだが、通常DNSサーバーごとカスタムに設定しなければいけない・Google DomainだとANAME/ALIASが使えなそう・nakedを使うとCDNが効かず遅くなるらしい などの理由から terrier.dev
-> www.terrier.dev
へリダイレクトすることで妥協した。