genAntdCss.ts 1.0 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import { extractStyle } from '@ant-design/cssinjs';
  2. import type Entity from '@ant-design/cssinjs/lib/Cache';
  3. import { createHash } from 'crypto';
  4. import fs from 'fs';
  5. import path from 'path';
  6. export type DoExtraStyleOptions = {
  7. cache: Entity;
  8. dir?: string;
  9. baseFileName?: string;
  10. };
  11. export function doExtraStyle({ cache, dir = 'antd-output', baseFileName = 'antd.min' }: DoExtraStyleOptions) {
  12. const baseDir = path.resolve(__dirname, '../../static/css');
  13. const outputCssPath = path.join(baseDir, dir);
  14. if (!fs.existsSync(outputCssPath)) {
  15. fs.mkdirSync(outputCssPath, { recursive: true });
  16. }
  17. const css = extractStyle(cache, true);
  18. if (!css) return '';
  19. const md5 = createHash('md5');
  20. const hash = md5.update(css).digest('hex');
  21. const fileName = `${baseFileName}.${hash.substring(0, 8)}.css`;
  22. const fullpath = path.join(outputCssPath, fileName);
  23. const res = `_next/static/css/${dir}/${fileName}`;
  24. if (fs.existsSync(fullpath)) return res;
  25. fs.writeFileSync(fullpath, css);
  26. return res;
  27. }