ant-design/scripts/generate-cssinjs.ts
𝑾𝒖𝒙𝒉 828f512747
fix: improve CSS cheker & fix lint errors (#53236)
* chore: add csslint

* chore: update

* chore: update

* fix css lint

* fix css lint

* fix css lint

* fix csslint

* fix css lint

* fix css lint

* fix css lint

* fix css lint

* fix css lint appearance

https://developer.mozilla.org/zh-CN/docs/Web/CSS/appearance

* fix csslint conic-gradient

* chore: fix lint tree-select

* chore: update logic

* Revert "fix css lint"

This reverts commit 094f58adbb.

* Revert "fix css lint"

This reverts commit 50da87be3a.

* chore: fix css

* chore: update

* chore: rm redundant

* chore: revert change

* chore: update

* chore: update
2025-03-22 03:09:03 +00:00

53 lines
1.7 KiB
TypeScript

import url from 'node:url';
import path from 'path';
import React from 'react';
import { globSync } from 'glob';
type StyleFn = (prefix?: string) => void;
interface GenCssinjsOptions {
key: string;
render: (Component: React.FC, filepath: string) => void;
beforeRender?: (componentName: string) => void;
}
export const styleFiles = globSync(
path
.join(
process.cwd(),
'components/!(version|config-provider|icon|auto-complete|col|row|time-picker|qrcode)/style/index.?(ts|tsx)',
)
.split(path.sep)
.join('/'),
);
export const generateCssinjs = ({ key, beforeRender, render }: GenCssinjsOptions) =>
Promise.all(
styleFiles.map(async (file) => {
const absPath = url.pathToFileURL(file).href;
const pathArr = file.split(path.sep);
const styleIndex = pathArr.lastIndexOf('style');
const componentName = pathArr[styleIndex - 1];
let useStyle: StyleFn = () => {};
if (file.includes('grid')) {
const { useColStyle, useRowStyle } = await import(absPath);
useStyle = (prefixCls) => {
useRowStyle(prefixCls);
useColStyle(prefixCls);
};
} else if (file.includes('tree-select')) {
const originalUseStyle = (await import(absPath)).default;
useStyle = (prefixCls, treePrefixCls = `${prefixCls}-tree`) =>
originalUseStyle(prefixCls, treePrefixCls);
} else {
useStyle = (await import(absPath)).default;
}
const Demo: React.FC = () => {
useStyle(`${key}-${componentName}`);
return React.createElement('div');
};
beforeRender?.(componentName);
render?.(Demo, path.relative(process.cwd(), file));
}),
);