Commit a7b4a123 authored by Sendya's avatar Sendya

fix: compile err

parent e78771be
import * as allIconDefs from '@ant-design/icons-svg';
import { IconDefinition } from '@ant-design/icons-svg/es/types';
import * as path from 'path';
import * as fs from 'fs';
import { promisify } from 'util';
// eslint-disable-next-line import/no-extraneous-dependencies
import { template } from 'lodash';
const writeFile = promisify(fs.writeFile);
interface IconDefinitionWithIdentifier extends IconDefinition {
svgIdentifier: string;
}
function walk<T>(fn: (iconDef: IconDefinitionWithIdentifier) => Promise<T>) {
return Promise.all(
Object.keys(allIconDefs).map(svgIdentifier => {
const iconDef = (allIconDefs as { [id: string]: IconDefinition })[svgIdentifier];
return fn({ svgIdentifier, ...iconDef });
}),
);
}
async function generateIcons() {
const iconsDir = path.join(__dirname, '../src/icons');
try {
await promisify(fs.access)(iconsDir);
} catch (err) {
await promisify(fs.mkdir)(iconsDir);
}
const render = template(
`
// GENERATE BY ./scripts/generate.ts
// DON NOT EDIT IT MANUALLY
import { SetupContext } from 'vue';
import <%= svgIdentifier %>Svg from '@ant-design/icons-svg/lib/asn/<%= svgIdentifier %>';
import AntdIcon, { AntdIconProps } from '@ant-design/icons-vue/lib/components/AntdIcon';
const <%= svgIdentifier %> = (props: AntdIconProps, context: SetupContext) => {
const p = { ...props, ...context.attrs };
return <AntdIcon {...p} icon={<%= svgIdentifier %>Svg}></AntdIcon>;
};
<%= svgIdentifier %>.displayName = '<%= svgIdentifier %>';
<%= svgIdentifier %>.inheritAttrs = false;
export default <%= svgIdentifier %>;
`.trim(),
);
await walk(async ({ svgIdentifier }) => {
// generate icon file
await writeFile(
path.resolve(__dirname, `../src/icons/${svgIdentifier}.tsx`),
render({ svgIdentifier }),
);
});
// generate icon index
const entryText = Object.keys(allIconDefs)
.sort()
.map(svgIdentifier => {
return `export { default as ${svgIdentifier} } from './${svgIdentifier}';`;
})
.join('\n');
await promisify(fs.appendFile)(
path.resolve(__dirname, '../src/icons/index.tsx'),
`
// GENERATE BY ./scripts/generate.ts
// DON NOT EDIT IT MANUALLY
${entryText}
`.trim(),
);
}
async function generateEntries() {
const render = template(
`
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _<%= svgIdentifier %> = _interopRequireDefault(require('./lib/icons/<%= svgIdentifier %>'));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var _default = _<%= svgIdentifier %>.default || _<%= svgIdentifier %>;
exports.default = _default;
module.exports = _default;
`.trim(),
);
await walk(async ({ svgIdentifier }) => {
// generate `Icon.js` in root folder
await writeFile(
path.resolve(__dirname, `../${svgIdentifier}.js`),
render({
svgIdentifier,
}),
);
// generate `Icon.d.ts` in root folder
await writeFile(
path.resolve(__dirname, `../${svgIdentifier}.d.ts`),
`export { default } from './lib/icons/${svgIdentifier}';`,
);
});
}
if (process.argv[2] === '--target=icon') {
generateIcons();
}
if (process.argv[2] === '--target=entry') {
generateEntries();
}
......@@ -7,7 +7,7 @@ import { AffixProps } from './interfaces/Affix';
/* replace antd ts define end */
import { useRouteContext, RouteContextProps } from '../RouteContext';
import { useProProvider } from '../ProProvider';
import { Affix, PageHeader, Tabs } from 'ant-design-vue';
import { Affix, PageHeader, Tabs, Spin } from 'ant-design-vue';
import GridContent from '../GridContent';
import FooterToolbar from '../FooterToolbar';
import './index.less';
......@@ -156,8 +156,6 @@ const defaultPageHeaderRender = (
tabActiveKey,
prefixedClassName: value.prefixedClassName,
})}
{...header}
preifxCls={prefixCls}
>
{header || renderPageHeader(content, extraContent, value.prefixedClassName)}
</PageHeader>
......
......@@ -3,7 +3,7 @@
"allowSyntheticDefaultImports": true,
"declaration": true,
"module": "esnext",
"target": "es2018",
"target": "esnext",
"moduleResolution": "node",
"jsx": "preserve",
"esModuleInterop": true
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment