音音是好音 〜 布施音人のブログ

SvelteKitでCSSなどが読み込まれない

no thumbnail image

CSSが適用されない

このサイトは SvelteKit で作っている。

SvelteKit を公式ドキュメントの Getting started に沿って導入すると、おおもとのapp.html<head> </head>内に、

<link rel="icon" href="%svelte.assets%/favicon.png" />
					

のような記述があったので、static/フォルダを%svelte.assets%で参照でき、グローバルなCSSなどはここに入れるとよいのかなと思って、static/css/style.cssを配置し、おおもとのapp.html<head> </head>内に

<link href="%svelte.assets%/css/style.css" rel="stylesheet" />
					

を記述してやっていた。

そうすると、ローカルでは例えば

image

のように表示されてくれるが、これを Netlify にデプロイしてアクセスすると、一部のページで、

image

のように、CSSが部分的に適用されなかった。

また、これは、routes/直下のページでは起こらず、それより深いところ(routes/posts/以下に各投稿に対応するページを置いているが、それとか)で起こっていた。

スタイルのうち、各Svelteコンポーネント内の<style>タグで指定しているものは反映されていて、グローバルなcssだけがちょうど読み込めていない。

あと、よく見るとfaviconも読み込めていなかった(faviconもstatic/以下に配置している)ので、staticフォルダを読みに行くところができていないみたい。

ソースを見る

ビルド後のサイトのソースを表示させてみると、cssの指定の部分は

<link href="../css/style.css" rel="stylesheet" />
					

となっていた。パスが../で指定されているので、routes直下のページはうまくいくが、それより深いところのページからはうまく読み込めていない。ローカルでは上手くいくのはなぜ...

svelte.config.jsに加筆

svelte.config.js

	kit: {
		// 略
		files: {
			assets: 'static',
			lib: 'src/lib',
			routes: 'src/routes',
			template: 'src/app.html'
		},
               // 略
	}
					

を書き足してみた。

→それでもダメ

%svelte.assets%とは?

そもそも%svelte.assets%の役割がよく分からなかったので、消してみた。

→解決した...(<link href="/css/style.css" rel="stylesheet" />からちゃんと読み込めている)

昔の仕様なのかな...