@sj-distributor/react-iconfont-cli 2.3.0 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ > 这个存储库是 原始存储库名称 [react-iconfont-cli](https://github.com/iconfont-cli/react-iconfont-cli) 的一个分支,它已经有一段时间没有被积极维护。我们已经决定接管这个项目的维护,以保持它的活力和改善它的功能。我们致力于引入新特性、修复现有问题,并与社区紧密合作,确保这个库能够满足开发者的需求。
2
+
1
3
  ## react-iconfont-cli
2
4
 
3
5
  用纯 JS 把 iconfont.cn 的图标转换成 React 组件,不依赖字体,支持多色彩
@@ -4,12 +4,42 @@ Object.defineProperty(exports, "__esModule", { value: true });
4
4
  var tslib_1 = require("tslib");
5
5
  var colors_1 = tslib_1.__importDefault(require("colors"));
6
6
  var getConfig_1 = require("../libs/getConfig");
7
- var iconfont_parser_1 = require("iconfont-parser");
8
7
  var generateComponent_1 = require("../libs/generateComponent");
9
- var config = getConfig_1.getConfig();
10
- iconfont_parser_1.fetchXml(config.symbol_url).then(function (result) {
11
- generateComponent_1.generateComponent(result, config);
12
- }).catch(function (e) {
13
- console.error(colors_1.default.red(e.message || 'Unknown Error'));
14
- process.exit(1);
15
- });
8
+ var axios_1 = tslib_1.__importDefault(require("axios"));
9
+ var xml2js_1 = require("xml2js");
10
+ var config = (0, getConfig_1.getConfig)();
11
+ var fetchXmlAndGenerateComponent = function (url) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
12
+ var data, matches_1, result, e_1, errorText;
13
+ return tslib_1.__generator(this, function (_a) {
14
+ switch (_a.label) {
15
+ case 0:
16
+ console.log('Fetching iconfont data...');
17
+ _a.label = 1;
18
+ case 1:
19
+ _a.trys.push([1, 4, , 5]);
20
+ return [4 /*yield*/, axios_1.default.get(url)];
21
+ case 2:
22
+ data = (_a.sent()).data;
23
+ matches_1 = String(data).match(/'<svg>(.+?)<\/svg>'/);
24
+ if (!matches_1)
25
+ throw new Error('You provide a wrong symbol url');
26
+ return [4 /*yield*/, new Promise(function (resolve, reject) {
27
+ (0, xml2js_1.parseString)("<svg>".concat(matches_1[1], "</svg>"), { rootName: 'svg' }, function (err, result) {
28
+ err ? reject(err) : resolve(result);
29
+ });
30
+ })];
31
+ case 3:
32
+ result = _a.sent();
33
+ (0, generateComponent_1.generateComponent)(result, config);
34
+ return [3 /*break*/, 5];
35
+ case 4:
36
+ e_1 = _a.sent();
37
+ errorText = e_1 instanceof Error ? e_1.message : 'Unknown Error';
38
+ console.error(colors_1.default.red(errorText));
39
+ process.exit(1);
40
+ return [3 /*break*/, 5];
41
+ case 5: return [2 /*return*/];
42
+ }
43
+ });
44
+ }); };
45
+ fetchXmlAndGenerateComponent(config.symbol_url);
@@ -0,0 +1,17 @@
1
+ export interface XmlData {
2
+ svg: {
3
+ symbol: Array<{
4
+ $: {
5
+ viewBox: string;
6
+ id: string;
7
+ };
8
+ path: Array<{
9
+ $: {
10
+ d: string;
11
+ fill?: string;
12
+ 'fill-opacity'?: number;
13
+ };
14
+ }>;
15
+ }>;
16
+ };
17
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,8 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.copyTemplate = void 0;
3
4
  var tslib_1 = require("tslib");
4
5
  var fs_1 = tslib_1.__importDefault(require("fs"));
5
6
  var path_1 = tslib_1.__importDefault(require("path"));
6
- exports.copyTemplate = function (fromFile, toFile) {
7
- return fs_1.default.copyFileSync(path_1.default.join(__dirname, "../templates/" + fromFile + ".template"), toFile);
7
+ var copyTemplate = function (fromFile, toFile) {
8
+ return fs_1.default.copyFileSync(path_1.default.join(__dirname, "../templates/".concat(fromFile, ".template")), toFile);
8
9
  };
10
+ exports.copyTemplate = copyTemplate;
@@ -1,3 +1,3 @@
1
- import { XmlData } from "iconfont-parser";
2
1
  import { Config } from "./getConfig";
2
+ import type { XmlData } from '../commands/types';
3
3
  export declare const generateComponent: (data: XmlData, config: Config) => void;
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateComponent = void 0;
3
4
  var tslib_1 = require("tslib");
4
5
  var fs_1 = tslib_1.__importDefault(require("fs"));
5
6
  var path_1 = tslib_1.__importDefault(require("path"));
@@ -12,7 +13,7 @@ var replace_1 = require("./replace");
12
13
  var whitespace_1 = require("./whitespace");
13
14
  var copyTemplate_1 = require("./copyTemplate");
14
15
  var ATTRIBUTE_FILL_MAP = ["path"];
15
- exports.generateComponent = function (data, config) {
16
+ var generateComponent = function (data, config) {
16
17
  var names = [];
17
18
  var imports = [];
18
19
  var saveDir = path_1.default.resolve(config.save_dir);
@@ -21,64 +22,65 @@ exports.generateComponent = function (data, config) {
21
22
  var cases = "";
22
23
  mkdirp_1.default.sync(saveDir);
23
24
  glob_1.default.sync(path_1.default.join(saveDir, "*")).forEach(function (file) { return fs_1.default.unlinkSync(file); });
24
- copyTemplate_1.copyTemplate("helper" + jsExtension, path_1.default.join(saveDir, "helper" + jsExtension));
25
+ (0, copyTemplate_1.copyTemplate)("helper".concat(jsExtension), path_1.default.join(saveDir, "helper".concat(jsExtension)));
25
26
  if (!config.use_typescript) {
26
- copyTemplate_1.copyTemplate("helper.d.ts", path_1.default.join(saveDir, "helper.d.ts"));
27
+ (0, copyTemplate_1.copyTemplate)("helper.d.ts", path_1.default.join(saveDir, "helper.d.ts"));
27
28
  }
28
29
  data.svg.symbol.forEach(function (item) {
29
30
  var singleFile;
30
31
  var iconId = item.$.id;
31
32
  var iconIdAfterTrim = config.trim_icon_prefix
32
- ? iconId.replace(new RegExp("^" + config.trim_icon_prefix + "(.+?)$"), function (_, value) { return value.replace(/^[-_.=+#@!~*]+(.+?)$/, "$1"); })
33
+ ? iconId.replace(new RegExp("^".concat(config.trim_icon_prefix, "(.+?)$")), function (_, value) { return value.replace(/^[-_.=+#@!~*]+(.+?)$/, "$1"); })
33
34
  : iconId;
34
- var componentName = lodash_1.upperFirst(lodash_1.camelCase(iconId));
35
+ var componentName = (0, lodash_1.upperFirst)((0, lodash_1.camelCase)(iconId));
35
36
  names.push(iconIdAfterTrim);
36
- cases += whitespace_1.whitespace(4) + "case '" + iconIdAfterTrim + "':\n";
37
+ cases += "".concat((0, whitespace_1.whitespace)(4), "case '").concat(iconIdAfterTrim, "':\n");
37
38
  imports.push(componentName);
38
- cases += whitespace_1.whitespace(6) + "return <" + componentName + " {...rest} />;\n";
39
- singleFile = getTemplate_1.getTemplate("SingleIcon" + jsxExtension);
40
- singleFile = replace_1.replaceSize(singleFile, config.default_icon_size);
39
+ cases += "".concat((0, whitespace_1.whitespace)(6), "return <").concat(componentName, " {...rest} />;\n");
40
+ singleFile = (0, getTemplate_1.getTemplate)("SingleIcon" + jsxExtension);
41
+ singleFile = (0, replace_1.replaceSize)(singleFile, config.default_icon_size);
41
42
  if (jsxExtension === ".tsx") {
42
- singleFile = replace_1.replaceReactName(singleFile, config.can_import_react);
43
+ singleFile = (0, replace_1.replaceReactName)(singleFile, config.can_import_react);
43
44
  }
44
- singleFile = replace_1.replaceComponentName(singleFile, componentName);
45
- singleFile = replace_1.replaceSingleIconContent(singleFile, generateCase(item, 4));
46
- singleFile = replace_1.replaceSizeUnit(singleFile, config.unit);
45
+ singleFile = (0, replace_1.replaceComponentName)(singleFile, componentName);
46
+ singleFile = (0, replace_1.replaceSingleIconContent)(singleFile, generateCase(item, 4));
47
+ singleFile = (0, replace_1.replaceSizeUnit)(singleFile, config.unit);
47
48
  fs_1.default.writeFileSync(path_1.default.join(saveDir, componentName + jsxExtension), singleFile);
48
49
  if (!config.use_typescript) {
49
- var typeDefinitionFile = getTemplate_1.getTemplate("SingleIcon.d.ts");
50
- typeDefinitionFile = replace_1.replaceComponentName(typeDefinitionFile, componentName);
50
+ var typeDefinitionFile = (0, getTemplate_1.getTemplate)("SingleIcon.d.ts");
51
+ typeDefinitionFile = (0, replace_1.replaceComponentName)(typeDefinitionFile, componentName);
51
52
  fs_1.default.writeFileSync(path_1.default.join(saveDir, componentName + ".d.ts"), typeDefinitionFile);
52
53
  }
53
- console.log(colors_1.default.green("√") + " Generated icon \"" + colors_1.default.yellow(iconId) + "\"");
54
+ console.log("".concat(colors_1.default.green("√"), " Generated icon \"").concat(colors_1.default.yellow(iconId), "\""));
54
55
  });
55
- var iconFile = getTemplate_1.getTemplate("Icon" + jsxExtension);
56
- iconFile = replace_1.replaceCases(iconFile, cases);
57
- iconFile = replace_1.replaceImports(iconFile, imports);
58
- iconFile = replace_1.replaceExports(iconFile, imports);
59
- iconFile = replace_1.replaceReactName(iconFile, config.can_import_react);
56
+ var iconFile = (0, getTemplate_1.getTemplate)("Icon" + jsxExtension);
57
+ iconFile = (0, replace_1.replaceCases)(iconFile, cases);
58
+ iconFile = (0, replace_1.replaceImports)(iconFile, imports);
59
+ iconFile = (0, replace_1.replaceExports)(iconFile, imports);
60
+ iconFile = (0, replace_1.replaceReactName)(iconFile, config.can_import_react);
60
61
  if (config.use_typescript) {
61
- iconFile = replace_1.replaceNames(iconFile, names);
62
+ iconFile = (0, replace_1.replaceNames)(iconFile, names);
62
63
  }
63
64
  else {
64
- iconFile = replace_1.replaceNamesArray(iconFile, names);
65
- var typeDefinitionFile = getTemplate_1.getTemplate("Icon.d.ts");
66
- typeDefinitionFile = replace_1.replaceExports(typeDefinitionFile, imports);
67
- typeDefinitionFile = replace_1.replaceNames(typeDefinitionFile, names);
65
+ iconFile = (0, replace_1.replaceNamesArray)(iconFile, names);
66
+ var typeDefinitionFile = (0, getTemplate_1.getTemplate)("Icon.d.ts");
67
+ typeDefinitionFile = (0, replace_1.replaceExports)(typeDefinitionFile, imports);
68
+ typeDefinitionFile = (0, replace_1.replaceNames)(typeDefinitionFile, names);
68
69
  fs_1.default.writeFileSync(path_1.default.join(saveDir, "index.d.ts"), typeDefinitionFile);
69
70
  }
70
71
  fs_1.default.writeFileSync(path_1.default.join(saveDir, "index" + jsxExtension), iconFile);
71
- console.log("\n" + colors_1.default.green("√") + " All icons have putted into dir: " + colors_1.default.green(config.save_dir) + "\n");
72
+ console.log("\n".concat(colors_1.default.green("√"), " All icons have putted into dir: ").concat(colors_1.default.green(config.save_dir), "\n"));
72
73
  };
74
+ exports.generateComponent = generateComponent;
73
75
  var generateCase = function (data, baseIdent) {
74
76
  var e_1, _a;
75
- var template = "\n" + whitespace_1.whitespace(baseIdent) + "<svg viewBox=\"" + data.$.viewBox + "\" width={size} height={size} style={style} {...rest}>\n";
77
+ var template = "\n".concat((0, whitespace_1.whitespace)(baseIdent), "<svg viewBox=\"").concat(data.$.viewBox, "\" width={size} height={size} style={style} {...rest}>\n");
76
78
  var _loop_1 = function (domName) {
77
79
  if (domName === "$") {
78
80
  return "continue";
79
81
  }
80
82
  if (!domName) {
81
- console.error(colors_1.default.red("Unable to transform dom \"" + domName + "\""));
83
+ console.error(colors_1.default.red("Unable to transform dom \"".concat(domName, "\"")));
82
84
  process.exit(1);
83
85
  }
84
86
  var counter = {
@@ -86,11 +88,11 @@ var generateCase = function (data, baseIdent) {
86
88
  baseIdent: baseIdent,
87
89
  };
88
90
  if (data[domName].$) {
89
- template += whitespace_1.whitespace(baseIdent + 2) + "<" + domName + addAttribute(domName, data[domName], counter) + "\n" + whitespace_1.whitespace(baseIdent + 2) + "/>\n";
91
+ template += "".concat((0, whitespace_1.whitespace)(baseIdent + 2), "<").concat(domName).concat(addAttribute(domName, data[domName], counter), "\n").concat((0, whitespace_1.whitespace)(baseIdent + 2), "/>\n");
90
92
  }
91
93
  else if (Array.isArray(data[domName])) {
92
94
  data[domName].forEach(function (sub) {
93
- template += whitespace_1.whitespace(baseIdent + 2) + "<" + domName + addAttribute(domName, sub, counter) + "\n" + whitespace_1.whitespace(baseIdent + 2) + "/>\n";
95
+ template += "".concat((0, whitespace_1.whitespace)(baseIdent + 2), "<").concat(domName).concat(addAttribute(domName, sub, counter), "\n").concat((0, whitespace_1.whitespace)(baseIdent + 2), "/>\n");
94
96
  });
95
97
  }
96
98
  };
@@ -107,7 +109,7 @@ var generateCase = function (data, baseIdent) {
107
109
  }
108
110
  finally { if (e_1) throw e_1.error; }
109
111
  }
110
- template += whitespace_1.whitespace(baseIdent) + "</svg>\n";
112
+ template += "".concat((0, whitespace_1.whitespace)(baseIdent), "</svg>\n");
111
113
  return template;
112
114
  };
113
115
  var addAttribute = function (domName, sub, counter) {
@@ -123,11 +125,11 @@ var addAttribute = function (domName, sub, counter) {
123
125
  for (var _b = tslib_1.__values(Object.keys(sub.$)), _c = _b.next(); !_c.done; _c = _b.next()) {
124
126
  var attributeName = _c.value;
125
127
  if (attributeName === "fill") {
126
- template += "\n" + whitespace_1.whitespace(counter.baseIdent + 4) + lodash_1.camelCase(attributeName) + "={getIconColor(color, " + counter.colorIndex + ", '" + sub.$[attributeName] + "')}";
128
+ template += "\n".concat((0, whitespace_1.whitespace)(counter.baseIdent + 4)).concat((0, lodash_1.camelCase)(attributeName), "={getIconColor(color, ").concat(counter.colorIndex, ", '").concat(sub.$[attributeName], "')}");
127
129
  counter.colorIndex += 1;
128
130
  }
129
131
  else {
130
- template += "\n" + whitespace_1.whitespace(counter.baseIdent + 4) + lodash_1.camelCase(attributeName) + "=\"" + sub.$[attributeName] + "\"";
132
+ template += "\n".concat((0, whitespace_1.whitespace)(counter.baseIdent + 4)).concat((0, lodash_1.camelCase)(attributeName), "=\"").concat(sub.$[attributeName], "\"");
131
133
  }
132
134
  }
133
135
  }
package/libs/getConfig.js CHANGED
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getConfig = void 0;
3
4
  var tslib_1 = require("tslib");
4
5
  var path_1 = tslib_1.__importDefault(require("path"));
5
6
  var fs_1 = tslib_1.__importDefault(require("fs"));
6
7
  var colors_1 = tslib_1.__importDefault(require("colors"));
7
8
  var iconfont_json_1 = tslib_1.__importDefault(require("./iconfont.json"));
8
9
  var cacheConfig;
9
- exports.getConfig = function () {
10
+ var getConfig = function () {
10
11
  if (cacheConfig) {
11
12
  return cacheConfig;
12
13
  }
@@ -30,3 +31,4 @@ exports.getConfig = function () {
30
31
  cacheConfig = config;
31
32
  return config;
32
33
  };
34
+ exports.getConfig = getConfig;
@@ -1,8 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getTemplate = void 0;
3
4
  var tslib_1 = require("tslib");
4
5
  var fs_1 = tslib_1.__importDefault(require("fs"));
5
6
  var path_1 = tslib_1.__importDefault(require("path"));
6
- exports.getTemplate = function (fileName) {
7
- return fs_1.default.readFileSync(path_1.default.join(__dirname, "../templates/" + fileName + ".template")).toString();
7
+ var getTemplate = function (fileName) {
8
+ return fs_1.default.readFileSync(path_1.default.join(__dirname, "../templates/".concat(fileName, ".template"))).toString();
8
9
  };
10
+ exports.getTemplate = getTemplate;
package/libs/replace.js CHANGED
@@ -1,34 +1,45 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.replaceSize = function (content, size) {
3
+ exports.replaceExports = exports.replaceSizeUnit = exports.replaceImports = exports.replaceSingleIconContent = exports.replaceReactName = exports.replaceComponentName = exports.replaceNamesArray = exports.replaceNames = exports.replaceCases = exports.replaceSize = void 0;
4
+ var replaceSize = function (content, size) {
4
5
  return content.replace(/#size#/g, String(size));
5
6
  };
6
- exports.replaceCases = function (content, cases) {
7
+ exports.replaceSize = replaceSize;
8
+ var replaceCases = function (content, cases) {
7
9
  return content.replace(/#cases#/g, cases);
8
10
  };
9
- exports.replaceNames = function (content, names) {
11
+ exports.replaceCases = replaceCases;
12
+ var replaceNames = function (content, names) {
10
13
  return content.replace(/#names#/g, names.join("' | '"));
11
14
  };
12
- exports.replaceNamesArray = function (content, names) {
15
+ exports.replaceNames = replaceNames;
16
+ var replaceNamesArray = function (content, names) {
13
17
  return content.replace(/#namesArray#/g, JSON.stringify(names).replace(/"/g, "'").replace(/','/g, "', '"));
14
18
  };
15
- exports.replaceComponentName = function (content, name) {
19
+ exports.replaceNamesArray = replaceNamesArray;
20
+ var replaceComponentName = function (content, name) {
16
21
  return content.replace(/#componentName#/g, name);
17
22
  };
18
- exports.replaceReactName = function (content, canImport) {
23
+ exports.replaceComponentName = replaceComponentName;
24
+ var replaceReactName = function (content, canImport) {
19
25
  return content.replace(/#reactName#/g, canImport ? "React, " : "");
20
26
  };
21
- exports.replaceSingleIconContent = function (content, render) {
27
+ exports.replaceReactName = replaceReactName;
28
+ var replaceSingleIconContent = function (content, render) {
22
29
  return content.replace(/#iconContent#/g, render);
23
30
  };
24
- exports.replaceImports = function (content, imports) {
25
- return content.replace(/#imports#/g, imports.map(function (item) { return "import " + item + " from './" + item + "';"; }).join("\n"));
31
+ exports.replaceSingleIconContent = replaceSingleIconContent;
32
+ var replaceImports = function (content, imports) {
33
+ return content.replace(/#imports#/g, imports.map(function (item) { return "import ".concat(item, " from './").concat(item, "';"); }).join("\n"));
26
34
  };
27
- exports.replaceSizeUnit = function (content, unit) {
28
- return content.replace(/\{size\}/g, "{size + '" + unit + "'}");
35
+ exports.replaceImports = replaceImports;
36
+ var replaceSizeUnit = function (content, unit) {
37
+ return content.replace(/\{size\}/g, "{size + '".concat(unit, "'}"));
29
38
  };
30
- exports.replaceExports = function (content, exports) {
39
+ exports.replaceSizeUnit = replaceSizeUnit;
40
+ var replaceExports = function (content, exports) {
31
41
  return content.replace(/#exports#/g, exports
32
- .map(function (item) { return "export { default as " + item + " } from './" + item + "';"; })
42
+ .map(function (item) { return "export { default as ".concat(item, " } from './").concat(item, "';"); })
33
43
  .join("\n"));
34
44
  };
45
+ exports.replaceExports = replaceExports;
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.whitespace = function (repeat) {
3
+ exports.whitespace = void 0;
4
+ var whitespace = function (repeat) {
4
5
  return ' '.repeat(repeat);
5
6
  };
7
+ exports.whitespace = whitespace;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sj-distributor/react-iconfont-cli",
3
- "version": "2.3.0",
3
+ "version": "2.4.0",
4
4
  "main": "index.js",
5
5
  "keywords": [
6
6
  "iconfont",
@@ -22,13 +22,14 @@
22
22
  "react": "*"
23
23
  },
24
24
  "dependencies": {
25
- "colors": "^1.3.3",
25
+ "axios": "^0.21.1",
26
+ "colors": "1.4.0",
26
27
  "glob": "^7.1.4",
27
- "iconfont-parser": "^1.0.0",
28
28
  "lodash": "^4.17.15",
29
29
  "minimist": "^1.2.5",
30
30
  "mkdirp": "^0.5.1",
31
- "tslib": "^1.10.0"
31
+ "tslib": "^1.10.0",
32
+ "xml2js": "0.4.22"
32
33
  },
33
34
  "devDependencies": {
34
35
  "@types/fs-extra": "^8.0.0",
@@ -38,8 +39,9 @@
38
39
  "@types/mkdirp": "^0.5.2",
39
40
  "@types/node": "^12.7.2",
40
41
  "@types/react": "^16.9.2",
42
+ "@types/xml2js": "0.4.5",
41
43
  "react": "^16.9.0",
42
44
  "ts-node": "^8.3.0",
43
- "typescript": "^3.5.3"
45
+ "typescript": "^4.0.0"
44
46
  }
45
47
  }