Skip to content

Commit bd2bf5a

Browse files
author
Simon Planinschek
committed
Add index generation to generator.js
1 parent a8fc593 commit bd2bf5a

1 file changed

Lines changed: 26 additions & 8 deletions

File tree

generator.js

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ function componentTemplate(name, svg) {
3737
let component = "import React from 'react'\n";
3838
component += "import { IconProps } from './types'\n";
3939
component += `const ${name}: React.FC<IconProps> = (props) => (`;
40-
component += svg + "\n\n";
40+
component += svg + ")\n\n";
4141
component += `export { ${name} }`;
4242

4343
return component;
@@ -61,6 +61,28 @@ function generateComponent(icon) {
6161
});
6262
}
6363

64+
/**
65+
* Generate index tsx file for easy import
66+
*
67+
* @param icons - Array of icons
68+
*/
69+
function generateIndex(icons) {
70+
let imports = "";
71+
let exports = "export {\n";
72+
73+
icons.forEach(icon => {
74+
const name = formatName(icon.name)
75+
imports += `import { ${name} } from './components/${name}'\n`
76+
exports += `\t${name},\n`
77+
});
78+
exports += "}";
79+
80+
fs.writeFileSync(
81+
"./index.tsx",
82+
(imports + "\n" + exports)
83+
);
84+
}
85+
6486
/**
6587
* Get SVG data form google static fonts api
6688
*
@@ -87,12 +109,8 @@ async function getSVGFile(icon, version) {
87109
// Parse response from json to js object
88110
const icons = await JSON.parse(data);
89111

90-
// Used form development only
91-
const icr = [];
92-
for(let i = 0; i < 2; i++) {
93-
icr.push(icons.icons[i])
94-
}
95-
96-
await generateComponent(icr);
112+
// Generate icon components and Index
113+
await generateComponent(icons.icons);
114+
await generateIndex(icons.icons);
97115

98116
})();

0 commit comments

Comments
 (0)