🧲

SvelteKit の Routing の仕様が破壊的に変わっていた

2022/10/29に公開

久しぶりに SvelteKit 触ったら

ブレイキングなチェンジがあったっぽく、

src/routes/
├ about.svelte
├ hello.svelte
└ index.svelte

でよかったのが

src/routes/
├ about/
│ └ +page.svelte
├ hello/
│ └ +page.svelte+page.svelte

て書かないといけなくなってた。「え」と思って調べたら「そりゃないぜリチャード!」て言ってる人がやっぱいっぱいいた。

https://github.com/sveltejs/kit/discussions/5748 (変更の理由などを説明している Discussion)
https://github.com/sveltejs/kit/discussions/5037 (↑の元になったと思われる Discussion)

2022年9月にこの変更が適用された様子。関連するコンポーネント、テストやらを about/ とかに一緒に入れれてええやろ?その他メリット多数。てことらしい。「お前ら、シンプル慣れたもの を一緒にすなよ?」「俺を信じろ、グレートな未来見せてやるぜ。」てリチャードは言ってる。

Next.js 13 の app/ ディレクトリも、

about/ とかの中に page.js を入れてルーティングできるようにするよってことらしく、どーやら世の中そーゆー流れらしい。(リチャードは「あいつら恥も知らず俺のグレートなアイデアパクりやがった」って言ってる)

now that the Next.js routing RFC is public, I can acknowledge that this is shamelessly stolen from there
(https://github.com/sveltejs/kit/discussions/5037)

とはいえ

俺のちっぽけな開発でもファイルベースじゃなくディレクトリベースのルーティングが必須になるのはフォルダがモジャモジャして嫌ではある。あと Discussion でいろんな人も言ってるけど +page.svelte ってファイルがエディタにいっぱい開かれてタブが見にくくなるのもイヤ。開くのが1ファイルだけだとしてもタブを見て何のページを編集してるかパッと分からないのもイヤ。

気づいた流れ、参考

久しぶりに SvelteKit のドキュメントを見る
→ Routing のとこで +page.svelte とか言ってる、about.svelte とかについての言及がない
→ Zenn で検索してみる
→ 以下の記事で事態を把握
https://zenn.dev/wnr/articles/50cnoe5xvzmw

しかし上記ルーティングは廃止され、今はディレクトリベース のみ になりました。
直後は反対意見もそれなりに出てましたね…笑

直後の反対意見が気になって探す
→ 該当の Discussion を見つけたので上のZenn記事のコメントにリンクを貼ろうかと思ったけど、独立した記事にした方がみんな事態に気付きやすいかも、と思ってそうした。

以上。

Discussion