@@ -4,6 +4,7 @@ import fsAsync from "fs/promises";
44import { JSDOM } from "jsdom" ;
55import { exec } from "child_process" ;
66import svgtojsx from "svg-to-jsx" ;
7+ import svgo from "svgo" ;
78
89interface ConfigEntry {
910 name : string ;
@@ -28,9 +29,7 @@ interface ConfigEntry {
2829 fs . rmSync ( `${ __dirname } /dist` , { recursive : true } ) ;
2930 fsAsync . mkdir ( `${ __dirname } /tmp` ) ;
3031
31- await degit ( "https://github.com/devicons/devicon.git" ) . clone (
32- `${ __dirname } /tmp/devicon`
33- ) ;
32+ await degit ( "devicons/devicon" ) . clone ( `${ __dirname } /tmp/devicon` ) ;
3433
3534 const deviconConfig : ConfigEntry [ ] = JSON . parse (
3635 ( await fsAsync . readFile ( `${ __dirname } /tmp/devicon/devicon.json` ) ) . toString ( )
@@ -55,7 +54,18 @@ interface ConfigEntry {
5554 const icon = await fsAsync . readFile (
5655 `${ __dirname } /tmp/devicon/icons/${ entry . name } /${ name } .svg`
5756 ) ;
58- const { document } = new JSDOM ( icon ) . window ;
57+ const optimizedIcon = svgo . optimize ( icon , {
58+ plugins : [
59+ {
60+ name : "inlineStyles" ,
61+ params : {
62+ onlyMatchedOnce : false ,
63+ } ,
64+ } ,
65+ "removeStyleElement" ,
66+ ] ,
67+ } ) as svgo . OptimizedSvg ;
68+ const { document } = new JSDOM ( optimizedIcon . data ) . window ;
5969 const dir = `${ __dirname } /tmp/dist/${ entry . name } /${ version } ` ;
6070 const reactName =
6171 name
@@ -110,10 +120,9 @@ module.exports = function ${reactName}({size = "1em", ${
110120 }
111121 }
112122 }
113- return (${ ( await svgtojsx ( svg . outerHTML ) ) . replace (
114- "<svg" ,
115- "<svg {...props}"
116- ) } );
123+ return (${ (
124+ await svgtojsx ( svg . outerHTML )
125+ ) . replace ( "<svg" , "<svg {...props}" ) } );
117126}`
118127 ) ;
119128 const definitions = `import React from "react";
0 commit comments