-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.js
83 lines (75 loc) · 1.83 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
"use strict";
const SVGO = require('svgo');
const fs = require('fs');
const defaults = [
'cleanupAttrs',
'cleanupListOfValues',
'cleanupNumericValues',
'convertColors',
'convertStyleToAttrs',
'minifyStyles',
'moveGroupAttrsToElems',
'removeComments',
'removeDoctype',
'removeEditorsNSData',
'removeEmptyAttrs',
'removeEmptyContainers',
'removeEmptyText',
'removeNonInheritableGroupAttrs',
'removeXMLProcInst',
'sortAttrs',
];
const lossy = [
'addAttributesToSVGElement',
'addClassesToSVGElement',
'cleanupEnableBackground',
'cleanupIDs',
'collapseGroups',
'convertPathData',
'convertShapeToPath',
'convertTransform',
'mergePaths',
'moveElemsAttrsToGroup',
'removeAttrs',
'removeDesc',
'removeDimensions',
'removeElementsByAttr',
'removeHiddenElems',
'removeMetadata',
'removeRasterImages',
'removeStyleElement',
'removeTitle',
'removeUnknownsAndDefaults',
'removeUnusedNS',
'removeUselessDefs',
'removeUselessStrokeAndFill',
'removeViewBox',
'removeXMLNS',
'transformsWithOnePath',
];
try {
const useLossy = process.argv[2];
const inFile = process.argv[3];
const outFile = process.argv[4];
const svgstr = fs.readFileSync(inFile);
const plugins = useLossy == "1" ? defaults.concat(lossy) : defaults;
const svgo = new SVGO({
full: true,
plugins: plugins,
});
svgo.optimize(svgstr, function(result) {
if (result.error || !result.data) {
console.error(result.error);
process.exit(1);
}
try {
fs.writeFileSync(outFile, result.data);
} catch(err) {
console.error(err);
process.exit(1);
}
});
} catch(err) {
console.error(err);
process.exit(1);
}