@@ -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