Skip to content

Commit acf26c7

Browse files
committed
feat: Support change summary icon name
1 parent 5ebb779 commit acf26c7

File tree

15 files changed

+47
-29
lines changed

15 files changed

+47
-29
lines changed

README.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,8 @@ npx iconfont init
6666
"save_dir": "./src/iconfont",
6767
"generate_mode": "all-in-one",
6868
"trim_icon_prefix": "icon",
69-
"default_icon_size": 18
69+
"default_icon_size": 18,
70+
"summary_component_name": "Icon"
7071
}
7172
```
7273
### 配置参数说明:
@@ -105,6 +106,9 @@ npx iconfont init
105106
我们将为每个生成的图标组件加入默认的字体大小,当然,你也可以通过传入props的方式改变这个size值。
106107

107108

109+
### summary_component_name
110+
就是汇总组件的名称,默认名称为`Icon`,您也可以改成`IconFont`或者您喜欢的名字。记住,它是一个变量名,您必须遵守Javascript中关于变量的语法规则。以及作为组件名,请尽量以大写字母开头。
111+
108112
# Step 4
109113
开始生成React组件
110114
```bash

scripts/config/all-in-one-js.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,6 @@
44
"generate_mode": "all-in-one",
55
"save_dir": "./snapshots/all-in-one-js",
66
"trim_icon_prefix": "icon",
7-
"default_icon_size": 14
7+
"default_icon_size": 14,
8+
"summary_component_name": "Icon"
89
}

scripts/config/all-in-one-ts.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,6 @@
44
"generate_mode": "all-in-one",
55
"save_dir": "./snapshots/all-in-one-ts",
66
"trim_icon_prefix": "icon",
7-
"default_icon_size": 16
7+
"default_icon_size": 16,
8+
"summary_component_name": "Icon"
89
}

scripts/config/depends-on-js.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,6 @@
44
"generate_mode": "depends-on",
55
"save_dir": "./snapshots/depends-on-js",
66
"trim_icon_prefix": "icon",
7-
"default_icon_size": 18
7+
"default_icon_size": 18,
8+
"summary_component_name": "IconFont"
89
}

scripts/config/depends-on-ts.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,6 @@
44
"generate_mode": "depends-on",
55
"save_dir": "./snapshots/depends-on-ts",
66
"trim_icon_prefix": "icon",
7-
"default_icon_size": 20
7+
"default_icon_size": 20,
8+
"summary_component_name": "CustomIcon"
89
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@ interface Props extends GProps, ViewProps {
1111
color?: string | string[];
1212
}
1313

14-
declare const Icon: FunctionComponent<Props>;
14+
declare const IconFont: FunctionComponent<Props>;
1515

16-
export = Icon;
16+
export = IconFont;
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import IconSetup from './IconSetup';
99
// If you don't like lots of icon files in your project,
1010
// try to set generate_mode to "all-in-one" in root file "iconfont.json".
1111
// And then regenerate icons by using cli command.
12-
const Icon = ({ color, name, size, ...rest }) => {
12+
const IconFont = ({ color, name, size, ...rest }) => {
1313
switch (name) {
1414
case 'alipay':
1515
return <IconAlipay size={size} color={color} {...rest} />;
@@ -23,8 +23,8 @@ const Icon = ({ color, name, size, ...rest }) => {
2323
return null;
2424
};
2525

26-
Icon.defaultProps = {
26+
IconFont.defaultProps = {
2727
size: 18,
2828
};
2929

30-
export default Icon;
30+
export default IconFont;
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ interface Props extends GProps, ViewProps {
1919
// If you don't like lots of icon files in your project,
2020
// try to set generate_mode to "all-in-one" in root file "iconfont.json".
2121
// And then regenerate icons by using cli command.
22-
const Icon: FunctionComponent<Props> = ({ color, name, size, ...rest }) => {
22+
const CustomIcon: FunctionComponent<Props> = ({ color, name, size, ...rest }) => {
2323
switch (name) {
2424
case 'alipay':
2525
return <IconAlipay size={size} color={color} {...rest} />;
@@ -33,8 +33,8 @@ const Icon: FunctionComponent<Props> = ({ color, name, size, ...rest }) => {
3333
return null;
3434
};
3535

36-
Icon.defaultProps = {
36+
CustomIcon.defaultProps = {
3737
size: 20,
3838
};
3939

40-
export default Icon;
40+
export default CustomIcon;

src/libs/generateComponent.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import {
1414
replaceNames,
1515
replaceNamesArray, replaceNoColor,
1616
replaceSingleIconContent,
17-
replaceSize,
17+
replaceSize, replaceSummaryIcon,
1818
replaceSvgComponents,
1919
replaceToDependsComments,
2020
replaceToOneComments,
@@ -132,7 +132,8 @@ export const generateComponent = (data: XmlData, config: Config) => {
132132
let typeDefinitionFile = getTemplate('Icon.d.ts');
133133

134134
typeDefinitionFile = replaceNames(typeDefinitionFile, names);
135-
fs.writeFileSync(path.join(saveDir, 'Icon.d.ts'), typeDefinitionFile);
135+
typeDefinitionFile = replaceSummaryIcon(typeDefinitionFile, config.summary_component_name);
136+
fs.writeFileSync(path.join(saveDir, config.summary_component_name + '.d.ts'), typeDefinitionFile);
136137
}
137138

138139
if (config.generate_mode === GENERATE_MODE.allInOne) {
@@ -143,7 +144,9 @@ export const generateComponent = (data: XmlData, config: Config) => {
143144
iconFile = replaceNoColor(iconFile);
144145
}
145146

146-
fs.writeFileSync(path.join(saveDir, 'Icon' + jsxExtension), iconFile);
147+
iconFile = replaceSummaryIcon(iconFile, config.summary_component_name);
148+
149+
fs.writeFileSync(path.join(saveDir, config.summary_component_name + jsxExtension), iconFile);
147150

148151
console.log(`\n${colors.green('√')} All icons have putted into dir: ${colors.green(config.save_dir)}\n`);
149152
};

src/libs/getConfig.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ export interface Config {
1111
generate_mode: GENERATE_MODE;
1212
trim_icon_prefix: string;
1313
default_icon_size: number;
14+
summary_component_name: string;
1415
}
1516

1617
let cacheConfig: Config;
@@ -40,6 +41,7 @@ export const getConfig = () => {
4041

4142
config.save_dir = config.save_dir || defaultConfig.save_dir;
4243
config.default_icon_size = config.default_icon_size || defaultConfig.default_icon_size;
44+
config.summary_component_name = config.summary_component_name || defaultConfig.summary_component_name;
4345

4446
if (!Object.values(GENERATE_MODE).includes(config.generate_mode)) {
4547
console.warn(colors.red(`Property generate_mode should be only one of ${JSON.stringify(Object.values(GENERATE_MODE))}`));

0 commit comments

Comments
 (0)