Ant Designでの使用方法
ヒント
このページのコンテンツは、この問題から来ています。
PurgeCSSは、コンテンツファイル内のセレクタをCSSファイル内のセレクタと比較することで機能します。独自のCSSを持つコンポーネントライブラリを使用する場合、コンテンツが見つからないためCSSが削除されます。コンテンツが見つかる場所を指定する必要があります。
ant-designの場合、ant-designで使用されるセレクタのリストは、そのコンテンツから簡単には取得できません。
以下は、Ant DesignとReactでPurgeCSSを使用する方法です。プロジェクトはcreate-react-appで作成されました。react-app-rewiredを使用して構成を拡張しています。
const glob = require("glob-all");
const paths = require("react-scripts/config/paths");
const { override, addPostcssPlugins } = require("customize-cra");
const purgecss = require("@fullhuman/postcss-purgecss")({
content: [
paths.appHtml,
...glob.sync(`${paths.appSrc}/**/*.js`, { nodir: true }),
...glob.sync(`${paths.appNodeModules}/antd/es/button/**/*.css`, {
nodir: true,
}),
],
extractors: [
{
extractor: (content) => content.match(/([a-zA-Z-]+)(?= {)/g) || [],
extensions: ["css"],
},
],
});
module.exports = override(
addPostcssPlugins([
...(process.env.NODE_ENV === "production" ? [purgecss] : []),
])
);
保持したいantd CSSファイルへのパスを基本的には追加しました。以下の例ではbutton
です。
...glob.sync(`${paths.appNodeModules}/antd/es/button/**/*.css`,
antd全体を保持するには、次のように置き換えることができます。:
...glob.sync(`${paths.appNodeModules}/antd/es/**/*.css`,
およびファイルからセレクタを取得しようとするcssファイルのエクストラクタを作成しました。
extractors: [
{
extractor: (content) => content.match(/([a-zA-Z-]+)(?= {)/g) || [],
extensions: ["css"],
},
],