SvelteKitにTailwindCSS v4を導入した話

SvelteKitプロジェクトにTailwindCSS v4を導入しました。 v4はVite専用プラグインが用意されており、v3と比べて設定が大幅にシンプルになっています。

v3との主な違い

TailwindCSS v4(2025年リリース)では、設定まわりが刷新されました。

v3 v4
設定ファイル tailwind.config.js が必要 不要(CSSファイルで設定)
PostCSS postcss.config.js が必要 不要
Vite連携 PostCSS経由 専用のViteプラグイン
CSS読み込み @tailwind base/components/utilities の3行 @import "tailwindcss" の1行

環境

  • SvelteKit 2系
  • Vite 8系
  • TailwindCSS v4

ファイル構成

今回追加・変更するファイルは3つです。

src/
  app.css             # 新規作成
  routes/
    +layout.svelte    # 変更
vite.config.ts        # 変更

Step 1: パッケージのインストール

npm install -D tailwindcss @tailwindcss/vite

tailwindcss 本体と、Vite用プラグイン @tailwindcss/vite の2つをインストールします。 v3では別途 autoprefixer なども必要でしたが、v4では不要です。

Step 2: vite.config.ts にプラグインを追加

// vite.config.ts
import { sveltekit } from '@sveltejs/kit/vite';
import { defineConfig } from 'vite';
import tailwindcss from '@tailwindcss/vite';

export default defineConfig({
  plugins: [tailwindcss(), sveltekit()]
});

tailwindcss()sveltekit() よりに追加します。PostCSS の設定ファイルは不要で、これだけでViteがTailwindを処理します。

Step 3: app.css を作成する

src/app.css を新規作成して、以下の1行だけ書きます。

/* src/app.css */
@import "tailwindcss";

v3では以下の3行が必要でしたが、v4では1行に統合されました。

/* v3の書き方(v4では不要) */
@tailwind base;
@tailwind components;
@tailwind utilities;

Step 4: +layout.svelte で読み込む

src/routes/+layout.svelteapp.css をimportします。

<!-- src/routes/+layout.svelte -->
<script lang="ts">
  import favicon from '$lib/assets/favicon.svg';
  import '../app.css';

  let { children } = $props();
</script>

<svelte:head>
  <link rel="icon" href={favicon} />
</svelte:head>

{@render children()}

+layout.svelte は全ページ共通で読み込まれるため、ここでimportすることでサイト全体にTailwindが適用されます。'../app.css'..src/routes/ から src/ に1階層上がることを意味します。

動作確認

npm run dev で開発サーバーを起動し、Tailwindクラスを試します。

<div class="max-w-2xl mx-auto p-8">
  <h1 class="text-3xl font-bold mb-6">記事一覧</h1>

  <ul class="space-y-2">
    {#each posts as post}
      <li>
        <a href="/posts/{post.id}" class="text-blue-600 hover:underline">
          {post.title}
        </a>
      </li>
    {/each}
  </ul>
</div>

タイトルが大きく太字になり、リンクが青色になれば導入成功です。

まとめ

概念 内容
@tailwindcss/vite Vite専用のTailwindプラグイン(v4から)
vite.config.ts プラグインを追加する設定ファイル
@import "tailwindcss" v4のCSS読み込み方法(1行で完結)
+layout.svelte 全ページ共通のCSSはここでimport

v4はv3と比べて設定ファイルが大幅に減り、導入手順がシンプルになりました。既存のv3プロジェクトをv4に移行する場合は設定ファイルの書き方が異なるため注意が必要です。

← トップページに戻る