CSSライブラリを goober から TailwindCSS に移行した
β機能である Next.js v13 app
dir で CSS in JS が Server Components で非対応という事を見落として、次の様な goober 関連のエラーに遭遇した。
Warning: CSS-in-JS is currently not supported in Server Components.
ただし、styled-jsx
と styled-components
は use client
と明記して適切な処理を加えれば Client Components (以下 CC)で動くとも書いてある。まあ取り敢えず TailwindCSS に移行することにした。同様の処理で goober やその他の CSS in JS ライブラリが動くかどうかは別レポジトリで試したい。
goober
※メモ書き
- src/styles/goober.js
- src/pages/_app.tsx
- src/pages/_document.tsx
- src/components/markdown/codeblock/copy-button.tsx
コード
goober 使用下ではこんな感じになっていた。Next.js v13 app
dir では v12 までの _app.tsx
や _document.tsx
が非対応なので、エラーを起こして当然ではある。
src/styles/goober.js
src/pages/_app.tsx
src/pages/_document.tsx
src/components/markdown/codeblock/copy-button.tsx
TailwindCSS
基本的に Install Tailwind CSS with Next.js - Tailwind CSS に倣って導入した。
CSS
::before
や ::after
の疑似要素や置換要素 content
などの使い方は、jxck 氏の blog.jxck.io を勝手に参考にさせてもらいました。
また、CSS の :has()
、 :is()
、 :not()
といった疑似要素をはじめて使いましたが、結構便利でした。
Prettier for TailwindCSS
TailwindCSS 推奨のクラス名に並べ替えるための Pretteir プラグインを利用した。
ESLint や Prettier の他のプラグインなどと違って、こちらは何の設定もなく動いた。
It works seamlessly with custom Tailwind configurations, and because it’s just a Prettier plugin, it works anywhere Prettier works — including every popular editor and IDE, and of course on the command line.
参照
- Getting Started | Next.js
- Styling: CSS-in-JS | Next.js
- oriverk/blog.oriverk.dev: blog with React + Next.js + TypeScript
- cristianbote/goober: 🥜 goober, a less than 1KB 🎉 css-in-js alternative with a familiar API
- Installation - Tailwind CSS
- Automatic Class Sorting with Prettier - Tailwind CSS
- blog.jxck.io