プロジェクト構造
一般的なSvelteKitプロジェクトは次のようになります。
my-project/
├ src/
│ ├ lib/
│ │ ├ server/
│ │ │ └ [your server-only lib files]
│ │ └ [your lib files]
│ ├ params/
│ │ └ [your param matchers]
│ ├ routes/
│ │ └ [your routes]
│ ├ app.html
│ ├ error.html
│ ├ hooks.client.js
│ ├ hooks.server.js
│ └ service-worker.js
├ static/
│ └ [your static assets]
├ tests/
│ └ [your tests]
├ package.json
├ svelte.config.js
├ tsconfig.json
└ vite.config.js
また、.gitignore
や.npmrc
(および.prettierrc
やeslint.config.js
など、npx sv create
を実行するときにこれらのオプションを選択した場合)のような一般的なファイルも見つかります。
プロジェクトファイル
src
src
ディレクトリには、プロジェクトの重要な部分が含まれています。src/routes
とsrc/app.html
を除くすべてはオプションです。
lib
には、$lib
エイリアスを使用してインポートできるライブラリコード(ユーティリティとコンポーネント)が含まれているか、svelte-package
を使用して配布用にパッケージ化できます。server
には、サーバー専用のライブラリコードが含まれています。$lib/server
エイリアスを使用してインポートできます。SvelteKitは、クライアントコードでこれらをインポートすることを防ぎます。
params
には、アプリに必要なパラメーターマッチャーが含まれています。routes
には、アプリケーションのルートが含まれています。また、単一のルート内でのみ使用されるその他のコンポーネントをここに配置することもできます。app.html
は、ページのテンプレートです。次のプレースホルダーを含むHTMLドキュメントです。%sveltekit.head%
- アプリに必要な<link>
および<script>
要素、および<svelte:head>
コンテンツ%sveltekit.body%
- レンダリングされたページのマークアップ。これは、ハイドレーションプロセスによって破壊される要素をブラウザ拡張機能が注入することによって発生するバグを防ぐために、<body>
内に直接ではなく、<div>
またはその他の要素の内側にある必要があります。SvelteKitは、これが当てはまらない場合、開発時に警告を発します。%sveltekit.assets%
- 指定されている場合はpaths.assets
、指定されていない場合はpaths.base
への相対パス%sveltekit.nonce%
- 手動で含めたリンクとスクリプトのCSP nonce(使用する場合)%sveltekit.env.[NAME]%
- これは、レンダリング時に[NAME]
環境変数に置き換えられます。これは、publicPrefix
(通常はPUBLIC_
)で始まる必要があります。一致しない場合は、''
にフォールバックします。
error.html
は、他のすべてが失敗した場合にレンダリングされるページです。次のプレースホルダーを含めることができます。%sveltekit.status%
- HTTPステータス%sveltekit.error.message%
- エラーメッセージ
hooks.client.js
には、クライアントのフックが含まれています。hooks.server.js
には、サーバーのフックが含まれています。service-worker.js
には、サービスワーカーが含まれています。
(プロジェクトに.js
ファイルと.ts
ファイルのどちらが含まれるかは、プロジェクトを作成するときにTypeScriptを使用することを選択したかどうかによって異なります。このページの下部にあるトグルを使用して、ドキュメントでJavaScriptとTypeScriptを切り替えることができます。)
プロジェクトの設定時にVitestを追加した場合、単体テストは.test.js
拡張子でsrc
ディレクトリに配置されます。
static
robots.txt
やfavicon.png
など、そのまま提供される静的アセットはすべてここに入ります。
tests
プロジェクトの設定時にブラウザテスト用にPlaywrightを追加した場合、テストはこのディレクトリに配置されます。
package.json
package.json
ファイルには、@sveltejs/kit
、svelte
、およびvite
がdevDependencies
として含まれている必要があります。
npx sv create
でプロジェクトを作成すると、package.json
に"type": "module"
が含まれていることにも気付くでしょう。これは、.js
ファイルがimport
およびexport
キーワードを持つネイティブのJavaScriptモジュールとして解釈されることを意味します。レガシーCommonJSファイルには.cjs
ファイル拡張子が必要です。
svelte.config.js
このファイルには、SvelteおよびSvelteKitの設定が含まれています。
tsconfig.json
このファイル(または、.ts
ファイルよりも型チェックされた.js
ファイルを使用する場合はjsconfig.json
)は、npx sv create
中に型チェックを追加した場合にTypeScriptを設定します。SvelteKitは特定の方法で設定される特定の構成に依存するため、独自の.svelte-kit/tsconfig.json
ファイルを生成し、独自の構成がextends
します。
vite.config.js
SvelteKitプロジェクトは、実際には、@sveltejs/kit/vite
プラグインと、その他のVite設定を使用する単なるViteプロジェクトです。
その他のファイル
.svelte-kit
プロジェクトの開発とビルドを行うと、SvelteKitは.svelte-kit
ディレクトリ(outDir
として設定可能)にファイルを生成します。その内容を無視して、いつでも削除できます(次回dev
またはbuild
を実行すると再生成されます)。