Panda CSS
Panda CSS は npm install し設定ファイルを追加すれば使えます。開発中はテンプレートでオートコンプリートが効きます。本番ビルドではテンプレートに使用した CSS のみが出力されます。
Setup
1. Install
$ npm install --save-dev @pandacss/dev
2. Init
postcss.config.cjs を作成するコマンドを入力します。
$ npx panda init --postcss
または postcss.config.js 等が既にある場合はプラグイン設定を追加します。
module.exports = {
plugins: {
"@pandacss/dev/postcss": {},
},
}
3. Add config file
プロジェクトルートに panda.config.ts を作成します。
import { defineConfig } from "@pandacss/dev"
export default defineConfig({
// Whether to use css reset
preflight: true,
// Where to look for your css declarations
include: ["./src/**/*.{js,jsx,ts,tsx}"],
// Files to exclude
exclude: [],
// The output directory for your css system
outdir: "styled-system",
})
4. Add gitignore
.gitignore に outdir で設定したディレクトリ(ここでは styled-system)を追加します。
5. Add command
package.json を開き、以下のスクリプトを追加します。
"scripts": {
"prepare": "panda codegen",
},
6. Run prepare
prepare を実行して styled-system を書き出します。これを元にオートコンプリートと CSS 出力が可能となります。
$ npm run prepare
7. Add CSS file
PostCSS で処理するエントリー用の CSS ファイルを作成します。※例えば src/assets/index.css
@layer reset, base, tokens, recipes, utilities;
8. Entry CSS
CSS をテンプレートのどこかで読み込みます。おすすめはグローバル src/pages/_global.tsx でのダイナミックエントリーです。
import type { GlobalProps } from "minista"
import { Head } from "minista"
export default function ({ children }: GlobalProps) {
return (
<>
<Head>
<link rel="stylesheet" href="/src/assets/index.css" />
</Head>
{children}
</>
)
}
Develop
テンプレートでエディタ補完を効かせながら開発できます。
// src/components/heading/index.tsx
import { css } from "../../../styled-system/css"
export default function ({ text }: { text: string }) {
return <h2 className={css({ color: "red" })}>{text}</h2>
}
Build
本番ビルドはローカルではそのまま実行できますが CI 環境では styled-system が無いため prepare で出力してビルドする必要があります。事前処理を加えたコマンドを追加するのがおすすめです。
"scripts": {
"build": "minista build",
"prepare": "panda codegen",
"prod": "npm run prepare && npm run build"
},