From b626b93417a5c1fd5f91b3641fb095f7ac50abf1 Mon Sep 17 00:00:00 2001 From: Samuel Newman Date: Tue, 24 Sep 2024 15:31:41 +0100 Subject: Automatically optimise SVG assets (#5467) * add svgo as dev dep * prefer viewbox * manual config * fix config param names * align config with svgomg * add lint-staged svgo hook * edit hook * add trailing whitespace plugin * run svgo on existing assets --- svgo.config.mjs | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 svgo.config.mjs (limited to 'svgo.config.mjs') diff --git a/svgo.config.mjs b/svgo.config.mjs new file mode 100644 index 000000000..d7c98cd54 --- /dev/null +++ b/svgo.config.mjs @@ -0,0 +1,64 @@ +const preset = [ + "removeDoctype", + "removeXMLProcInst", + "removeComments", + "removeMetadata", + "removeEditorsNSData", + "cleanupAttrs", + "mergeStyles", + "inlineStyles", + "minifyStyles", + "cleanupIds", + "removeUselessDefs", + "cleanupNumericValues", + "convertColors", + "removeUnknownsAndDefaults", + "removeNonInheritableGroupAttrs", + "removeUselessStrokeAndFill", + "removeDimensions", + "cleanupEnableBackground", + "removeHiddenElems", + "removeEmptyText", + "convertShapeToPath", + "convertEllipseToCircle", + "moveElemsAttrsToGroup", + "moveGroupAttrsToElems", + "collapseGroups", + "convertPathData", + "convertTransform", + "removeEmptyAttrs", + "removeEmptyContainers", + "removeUnusedNS", + "mergePaths", + "sortAttrs", + "sortDefsChildren", + "removeTitle", + "removeDesc", +] + +export default { + plugins: [...preset.map(name => ({ + name, + params: { + floatPrecision: 3, + transformPrecision: 5, + // minimise diff in ouput from svgomg + // maybe remove in future? will produce smaller output + convertToZ: false, + removeUseless: false, + } + })), + { + name: 'addTrailingWhitespace', + fn() { + return { + root: { + exit (root) { + root.children.push({ type: 'text', value: '\n' }) + return root + } + } + } + } + }] +}; -- cgit 1.4.1