@@ -6,6 +6,7 @@ const {fabric} = require('fabric');
6
6
const { DOMParser, XMLSerializer} = require ( 'xmldom' ) ;
7
7
const { readFile, writeFile} = require ( 'fs' ) . promises ;
8
8
const { resolve} = require ( 'path' ) ;
9
+ const Svgo = require ( 'svgo' ) ;
9
10
10
11
function exit ( err ) {
11
12
if ( err ) console . error ( err ) ;
@@ -20,6 +21,25 @@ function loadSvg(svg) {
20
21
} ) ;
21
22
}
22
23
24
+ async function generateSvgFavicon ( svg , outputFile ) {
25
+ const svgo = new Svgo ( {
26
+ plugins : [
27
+ { removeDimensions : true } ,
28
+ {
29
+ addAttributesToSVGElement : {
30
+ attributes : [
31
+ { 'width' : '32' } ,
32
+ { 'height' : '32' } ,
33
+ ] ,
34
+ } ,
35
+ } ,
36
+ ] ,
37
+ } ) ;
38
+
39
+ const { data} = await svgo . optimize ( svg ) ;
40
+ await writeFile ( outputFile , data ) ;
41
+ }
42
+
23
43
async function generate ( svg , outputFile , { size, bg, removeDetail} = { } ) {
24
44
const parser = new DOMParser ( ) ;
25
45
const serializer = new XMLSerializer ( ) ;
@@ -67,6 +87,7 @@ async function generate(svg, outputFile, {size, bg, removeDetail} = {}) {
67
87
68
88
async function main ( ) {
69
89
const svg = await readFile ( resolve ( __dirname , '../assets/logo.svg' ) , 'utf8' ) ;
90
+ await generateSvgFavicon ( svg , resolve ( __dirname , '../public/img/favicon.svg' ) ) ;
70
91
await generate ( svg , resolve ( __dirname , '../public/img/gitea-lg.png' ) , { size : 880 } ) ;
71
92
await generate ( svg , resolve ( __dirname , '../public/img/gitea-512.png' ) , { size : 512 } ) ;
72
93
await generate ( svg , resolve ( __dirname , '../public/img/gitea-192.png' ) , { size : 192 } ) ;
0 commit comments