💡

Remix SPAにTailwindcssを導入でエラーになる問題の解消方法

2024/02/25に公開

Remix SPAとTailwindcssを一緒に使おうとして、エラーになったところがあったので、その問題の解消方法について記しておきます。

前提として、下記でremixのSPAが動く状態にしてください。

npx create-remix@latest --template remix-run/remix/templates/spa

tailwindcssの導入

tailwindcssの公式の導入手順は下記(SPA版ではない普通のRemixだけど)
https://tailwindcss.com/docs/guides/remix
https://remix.run/docs/en/main/styling/tailwind

しかしSPA版では上記の通りやってもうまくいかない。
その通りにやったら下記エラーが出た。

Error: No route matches URL "/@tailwind%20base;@tailwind%20components;@tailwind%20utilities;"

問題の解消方法

root.tsxのimportのところで、下記のように app.css?url とするとうまくいく。

import styles from './styles/app.css?url';
import type { LinksFunction } from "@remix-run/node";

export const links: LinksFunction = () => [
  { rel: "stylesheet", href: styles },
];

これは、viteの機能で、指定されたリソースへのパブリックURLを返す仕組みらしい。
https://ja.vitejs.dev/guide/assets.html#explicit-url-imports

実はもっといい方法があったりするのだろうか。それともこれが最適解なのかな。

Discussion