ShopifyアプリのサンプルがNext.js / Koa / webpackを使わなくなっていたので経緯を調べた
Shopifyアプリを作成するコマンド shopify app create node
でコードの展開元になっているShopify/shopify-app-node がここ半年くらいで様変わりしていたので超簡単にだけど経緯を調べてみた。
2021年10月 Next.jsをやめる
Remove Next.js and reorganize app by paulomarg · Pull Request #661 · Shopify/shopify-app-node
Next.jsとKoaを使っていたが遅いし複雑でKoaとwebpackで必要なことはほぼできるからKoaのみにします、ということでNext.jsをやめたみたい。
2022年1月 Koaをやめる
Use express instead of Koa by mllemango · Pull Request #693 · Shopify/shopify-app-node
JSフレームワークの使い方に一貫性を保つために、ということでKoaをやめてExpressを使うように変わっていた。プルリクに貼ってあるリンク先が見れないのでどの辺に対する一貫性(consistent)を言っているのかはわからなかった。
2022年3月 webpackをやめる
overhaul to use vite + vitest over webpack 🎉 by JaKXz · Pull Request #718 · Shopify/shopify-app-node
webpackからViteに変更したみたい。合わせて色々リファクタリングが入っている。ファイル変更を見ているとVitestでテスト書きたい&もろもろ、という感じがした。
感想
変化が激しい。
2022年x月 バックエンドとフロントエンドが分離(2022年8月2日追記)
いつからこうなったのかわからないけれど、2022年8月2日時点でShopify CLI(バージョン3.x)で展開されるアプリは https://github.com/Shopify/shopify-app-template-node/tree/cli_three になっている。cli_threeブランチ。
実際に展開されるのは Shpoify/cli のfixtureディレクトリのコード https://github.com/Shopify/cli/tree/main/fixtures/app だと思う。
バックエンドのExpress(webディレクトリ)とフロントエンドはReact(web/frontendディレクトリ)が明確に分離された。ReactはViteでビルド。
ルートディレクトリも合わせると node_modules、web/node_modules、web/frontend/node_modules という3段階構成で、なんだかNext.jsのときより結局複雑になってるんじゃないかという気持ちがしなくもない。
ルートはshopifyコマンドの実行が主でバックエンドとフロントを同時に起動したりできる。開発を始める際には一見便利だけど、プロダクションの運用を考えると結局裏で何をやっているか理解しなければいけないので、ちゃんとドキュメントに書いて欲しい。
Discussion