Setup Stylelint v16 for CSS-in-JS
Install Stylelint & generate config
bash
npm init stylelintまたは
bash
pnpm create stylelintなど、セットアップ用のコマンドが用意されている。
Setup config for CSS-in-JS
公式ドキュメントを参照しつつ、CSS-in-JS 用に次のような設定を行った。
json
// `.stylelintrc`
{
"customSyntax": "postcss-styled-syntax",
"extends": "stylelint-config-recommended",
"rules": {
"media-query-no-invalid": null
}
}postcss-styled-syntax
Emotion や styled-components の記法をサポートとした customSyntax のパッケージ。
これを利用すると、css メソッドや styled メソッド内の CSS がちゃんと評価されるようになる。
inline comment // error
通常 Inline comment はエラーになる。stylelint でサポートすること自体は可能だが、CSS 標準に従った方がいいと思われる。postcss-styled-syntax でも同様に書かれており、意図しない挙動をする可能性がある。
media-query-no-invalid
メディアクエリ用のルールは、テンプレートリテラルが入っているとエラーを出す。恐らく対応する手段がないので無効化した。
jsx
<div
css={css`
@media (width < ${theme.breakpoints.md}px) {
display: flex;
}
`}
/>Run script
走らせるスクリプトを次のように設定した。
json
// package.json
{
"scripts": {
"lint:css": "stylelint '**/*.{ts,tsx,css}'"
}
}Setup VSCode settings
VSCode では、CSS-in-JS 用に設定が必要である。 次のように Stylelint plugin が tsx や ts ファイルも対象に取るように設定した。
jsx
{
//"stylelint.customSyntax": "postcss-styled-syntax",
"stylelint.validate": ["css", "typescript", "typescriptreact"]
}