From c950d65fb7a8c9b614773bacf404ea84727bb4b9 Mon Sep 17 00:00:00 2001 From: Ans Date: Thu, 19 Mar 2026 17:50:18 -0400 Subject: [PATCH] Remove custom SVGo plugin --- ...svgo-plugin-add-classes-to-svg-element.cjs | 140 ------------------ svgo.config.js | 10 +- 2 files changed, 7 insertions(+), 143 deletions(-) delete mode 100755 scripts/svgo-plugin-add-classes-to-svg-element.cjs diff --git a/scripts/svgo-plugin-add-classes-to-svg-element.cjs b/scripts/svgo-plugin-add-classes-to-svg-element.cjs deleted file mode 100755 index 3955ece203..0000000000 --- a/scripts/svgo-plugin-add-classes-to-svg-element.cjs +++ /dev/null @@ -1,140 +0,0 @@ -'use strict'; - -const path = require('path'); - -exports.name = 'addClassesToSVGElement'; -exports.description = 'adds classnames to an outer element'; - -const ENOCLS = `Error in plugin "addClassesToSVGElement": absent parameters. -It should have a list of classes in "classNames" or one "className". -Config example: -plugins: [ - { - name: "addClassesToSVGElement", - params: { - className: "mySvg" - } - } -] -plugins: [ - { - name: "addClassesToSVGElement", - params: { - classNames: ["mySvg", "size-big"] - } - } -] -Optionally, the "suffixPattern" can be added to include a duplicate of each -class name with an added suffix string. The magic keyword "$FILENAME" can -be added to include the filename as part of the suffix string. For example: -plugins: [ - { - name: "addClassesToSVGElement", - params: { - classNames: ["mySvg"], - suffixPattern: "__$FILENAME" - } - } -] -`; - -/** - * Add classnames to an outer element. Example config: - * - * plugins: [ - * { - * name: "addClassesToSVGElement", - * params: { - * className: "mySvg" - * } - * } - * ] - * - * plugins: [ - * { - * name: "addClassesToSVGElement", - * params: { - * classNames: ["mySvg", "size-big"] - * } - * } - * ] - * - * Use the suffixPattern parameter to add an arbitrary suffix to - * the class names. - * - * plugins: [ - * { - * name: "addClassesToSVGElement", - * params: { - * classNames: ["mySvg"], - * suffixPattern: "__$FILENAME" - * } - * } - * ] - * - * Use the boolean doesPreserveClasses parameter to preserve any - * existing classes on the SVG element, otherwise any existing - * classes will be removed. - * - * plugins: [ - * { - * name: "addClassesToSVGElement", - * params: { - * classNames: ["mySvg"], - * doesPreserveClasses: true - * } - * } - * ] - * @author April Arcus, Anselm Bradford - * @type {import('./plugins-types').Plugin<'addClassesToSVGElement'>} - */ -exports.fn = (root, params, info) => { - if ( - !(Array.isArray(params.classNames) && params.classNames.some(String)) && - !params.className - ) { - console.error(ENOCLS); - return null; - } - const classNames = params.classNames || [params.className]; - - /** - * If we have a suffix pattern, - * duplicate the existing class names and add a copy with the suffix. - * If the suffix pattern contains the magic keyword '$FILENAME', - * it is replaced with the actual filename. For example, - * if the className param is 'mySvg' and the suffixPattern - * param is '__$FILENAME`, then for 'cat.svg`, the final classes - * will be 'mySvg mySvg__cat'. For 'dog.svg', the final classes - * will be 'mySvg mSvg__dog'. - */ - if (typeof params.suffixPattern !== 'undefined') { - let suffixPattern = params.suffixPattern; - const filename = path.basename(info.path, '.svg'); - suffixPattern = suffixPattern.replace('$FILENAME', filename); - for (let i = 0, len = classNames.length; i < len; i++) { - classNames.push(classNames[i] + suffixPattern); - } - } - - return { - element: { - enter: (node, parentNode) => { - if (node.name === 'svg' && parentNode.type === 'root') { - params.doesPreserveClasses ? null : (node.attributes.class = null); - const classList = new Set( - node.attributes.class == null - ? null - : node.attributes.class.split(' '), - ); - for (const className of classNames) { - if (className != null) { - classList.add(className); - } - } - node.attributes.class = Array.from(classList).join(' '); - } - }, - }, - }; -}; diff --git a/svgo.config.js b/svgo.config.js index c7afa6e8ed..14ecdcfa34 100644 --- a/svgo.config.js +++ b/svgo.config.js @@ -1,4 +1,4 @@ -import addClassesToSVGElement from './scripts/svgo-plugin-add-classes-to-svg-element.cjs'; +import path from 'path'; export default { plugins: [ @@ -27,8 +27,12 @@ export default { }, { name: 'addClassesToSVGElement', - params: { className: 'cf-icon-svg', suffixPattern: '--$FILENAME' }, - fn: addClassesToSVGElement.fn, + params: { + className: (_, info) => { + const filename = path.basename(info.path, '.svg'); + return `cf-icon-svg cf-icon-svg--${filename}`; + }, + }, }, ], };