Nekobitoのビルドをcreate-elm-appからParcelに移行した
趣味で作っている、NekobitoというElm製Markdownメモ帳のビルドを、create-elm-appからParcelに移行しました。
なぜParcelに移行したのか
create-elm-appの依存パッケージが多いのが少し嫌でした。Dependabotを設定しているので自動でPRが作成されるのですが、なぜ必要なのかよくわからないパッケージの更新をチェックするのはなんだかなあという気分がして、なるべく依存が少ないものに乗り換えたいなと思っていました。
移行時のコミットのpackage-lock.jsonを見ると、追加行数より削除行数のほうがだいぶ多いので、やってよかったのではと思います。
Parcelの使い方
ParcelはElmをサポートしているので、ほぼガイドの通りにやればできます。
parcel-bundlerをインストールして、エントリポイントとなるHTMLファイルを指定すればビルドできるようです。
# 開発サーバー立ち上げ parcel index.html # ビルド parcel build index.html
create-elm-appとの差分
1からやる場合は何も考えることはなさそうですが、今回はcreate-elm-appからの移行です。create-elm-app用の設定になっているようなところは修正が必要でした。
index.jsの指定
create-elm-appではHTMLにscriptタグを指定する必要がありませんでしたが、Parcelでは指定が必要でした。
PUBLIC_URL
create-elm-appでは%PUBLIC_URL%
という変数をHTMLに埋め込んで、アセットファイルなどのパスの指定をしていましたが、ParcelではHTMLファイルからの相対パスにする必要がありました。
manifest.jsonのリネーム
PWA用のマニフェストファイルで用意していた(というかcreate-elm-appが勝手に作ってくれていた)manifest.jsonですが、Parcelだとjsonファイルもjsに変換されてしまっていました。拡張子を.webmanifest
にする必要がありました。
- ドキュメント:WebManifest
Service Worker
Service Workerの設定もcreate-elm-appが勝手にやってくれていた設定の一つです。
これがないとPWAの挙動にならないので、最低限の設定をしたservice-worker.js
を用意して、それを読み込ませました。
まとめ
だいたいこんな感じでParcelに移行できました。変更のPRは以下です。 これから同じような移行作業を考えている方がいたら、参考になれば幸いです。
Migrate to parcel by gaaamii · Pull Request #79 · gaaamii/nekobito