123456789101112131415161718192021222324252627282930313233343536 |
- import { extractStyle } from '@ant-design/cssinjs';
- import type Entity from '@ant-design/cssinjs/lib/Cache';
- import { createHash } from 'crypto';
- import fs from 'fs';
- import path from 'path';
- export type DoExtraStyleOptions = {
- cache: Entity;
- dir?: string;
- baseFileName?: string;
- };
- export function doExtraStyle({ cache, dir = 'antd-output', baseFileName = 'antd.min' }: DoExtraStyleOptions) {
- const baseDir = path.resolve(__dirname, '../../static/css');
- const outputCssPath = path.join(baseDir, dir);
- if (!fs.existsSync(outputCssPath)) {
- fs.mkdirSync(outputCssPath, { recursive: true });
- }
- const css = extractStyle(cache, true);
- if (!css) return '';
- const md5 = createHash('md5');
- const hash = md5.update(css).digest('hex');
- const fileName = `${baseFileName}.${hash.substring(0, 8)}.css`;
- const fullpath = path.join(outputCssPath, fileName);
- const res = `_next/static/css/${dir}/${fileName}`;
- if (fs.existsSync(fullpath)) return res;
- fs.writeFileSync(fullpath, css);
- return res;
- }
|