Astroって大文字小文字を区別してる?
はい、基本的には区別します。ただ、どこで区別されるかは場面によって違います。
- コンポーネント名(Astro自体のルール)
タグの先頭が大文字ならコンポーネント、小文字ならただのHTML要素として扱われます。
astro
---
import Header from "../components/Header.astro";
import header from "../components/Header.astro";
---
<Header /> <!-- コンポーネントとして描画される -->
<header /> <!-- HTMLの<header>タグになる(importは使われない) -->コンポーネントは大文字始まりで import する、と覚えておけば大丈夫です。
- import のパス(OSの問題)
いちばんハマりやすいのがここです。
- Windows と macOS は、標準では大文字小文字を区別しません。
./header.astroと書いてもHeader.astroが読み込まれてしまいます。 - Linux は区別します。
そのため「手元の Windows では動くのに、Linux 上のビルド(GitHub Actions や Cloudflare のビルドなど)では Could not resolve で失敗する」ということが起きます。今のようにローカルでビルドしてデプロイしているあいだは表に出ませんが、ビルド環境を移したときに急に壊れる原因になります。import はファイル名と大文字小文字まで一致させておくのが安全です。
- ページのファイル名と URL
src/pages/About.astroは/Aboutになります。本番の URL は大文字小文字を区別するので、/aboutでアクセスすると 404 になる可能性があります。src/pagesの中のファイル名は**すべて小文字(単語の区切りはハイフン)**にしておくのが定石です。
- スクリプト部分(JavaScript/TypeScript)
変数名、props、関数名などは JS のルールそのままなので、当然区別されます。
コメント