issues
search
trpfrog
/
trpfrog.net
A monorepo for my personal website, trpfrog.net, built with Next.js and TypeScript.
https://trpfrog.net
4
stars
1
forks
source link
Tailwind CSS を導入する
#59
Closed
trpfrog
closed
7 months ago
trpfrog
commented
9 months ago
動機
SCSS + CSS Modules は管理していく中でいろいろな辛さが出てきた
自由度が高くて散らかってきた
特にネスト、
@use
これはコーディング規約でどうにかできそうだけど
別のファイルに分割しなければいけないので、一覧性に欠ける
CSS 自体の記述量が多い (ボイラープレートが多い)
(将来的には解決されそうだが) Turbopack が SCSS に対応していない
一応基本的な機能は対応しているらしい
そもそも 2019 年から受け継いでいる負の遺産を断ち切りたいというのもある
global に置かれている大量の CSS たち……
あと新しい技術にそろそろ触れておきたいですよね、という興味の部分もアリ
技術選定
CSS + CSS Modules
乗り換えは楽?
Media query に変数が使えないのがつらい
コンポーネント系の CSS in JS
コンポーネントベースのものはマークアップと密結合されるので使うのを避けたい (ロックインされる)
薄い wrapper を使う案もあるが、そこまでするならそういう責務を持ったコンポーネントに軽く Tailwind 書けば良くないですか?という気持ちもある (そんなに単純ではない?)
使ったことがないのでここは後々検討すれば良さそう……
vanilla-extract
わりと有力だったが、
.css.ts
に書かなければいけない仕様がつらかった
Kuma UI
良さそうだけどやっぱりロックインされないか不安
新しすぎる?今採用するのはリスクが大きいかも
Tailwind CSS + Tailwind Variants
最有力、モダンな技術で単純に興味がある
モダンかつエコシステムが整ってきていて、長く便利に使えそう
かなり懸念点はあったものの、後述の理由によりこれを使いたい
Tailwind CSS について
Tailwind CSS を採用するメリット
同じファイルにスタイルとマークアップをまとめられる
Vitest 使えばテストも一箇所に書けそう、問題は Storybook か?
Storybook、既にメンテつらくて死にかけているので捨ててもいいかも (話が脱線しました)
ユーティリティクラスが「それやるよね!」みたいなまとまり方をしていて良い
px-
で左右 padding みたいな
バンドルサイズを減らせる
使えるサイズが限定されているので、間違った方向に凝る必要がなくなりそう
単純に記述量が少ないので、パッと書けそう
もちろん CSS も補完が効くのでそこまで関係ないと思われるが、補完の候補から選ぶのに時間がかかることありませんか?
(Tailwind に限った話ではないが) Reset CSS が効く
思わぬデフォルトスタイルシートが邪魔してくることがあるので、リセットしてくれた方がありがたい
今のスタイルは破壊されるけど
懸念点と自分なりの見解
負債になりそう
もう既にウンコードのCSSでそうなっているので死んだら乗り換える的な気持ちでやれば良さそう
Tailwind 自体これ系のデファクトになりそうな空気感がある(要出典)、しばらくはメンテされるだろうし腐る心配はないと思う
クラス名が汚い
普通ユーザはクラス名見ないし、CSS Modules でも別にクラス名は綺麗でない
クラス名の略称がつらそう
分かるが、短いものはよく使うものなので慣れかもしれない
だいたい、CSS も
margin: 3px 5px
みたいなやつどっちが上下でどっちが左右なのか分からないし、ドキュメント読まないとプロパティを理解できない点ではどっちも同じだと思う
JSXが読みにくくなる
Tailwind Variants使えばマークアップとスタイル切り離せるのでよさそう (そういう目的のライブラリではないけど)
クラス名が長すぎる
適切にコンポーネント分割すればよさそう
CSSほどの自由度はなさそう
自由度ありすぎるとカオスになるから逆に良いかも
ロックインされそう
はい
prefix つければ剥がしやすくなるのである程度はマシになると思う (
tw-
)
移行のための方針
[x] #60
これにより壊れた箇所は CSS 側で修正していく
[x] #61
IntrinsicElements: p, h1, h2, div のようなやつ
これにスタイルをつけた wrapper を作ることで global の HTML タグを汚染せずに済む
スタイルを打ち消したりしなくて済むので、よりセマンティックなHTMLに近づく (class が全然セマンティックではないが)
[ ] #62
動機
@use
技術選定
.css.ts
に書かなければいけない仕様がつらかったTailwind CSS について
Tailwind CSS を採用するメリット
px-
で左右 padding みたいな懸念点と自分なりの見解
margin: 3px 5px
みたいなやつどっちが上下でどっちが左右なのか分からないし、ドキュメント読まないとプロパティを理解できない点ではどっちも同じだと思うtw-
)移行のための方針