SVGO removeAttrs不生效?命令行通配符*无法识别?
问题1:SVGO配置未移除style属性和viewBox
原因分析
- 配置文件语法错误:你的配置里写的是
module.export,正确的Node.js模块导出语法是module.exports(缺少末尾的s),这会导致SVGO无法正确加载配置。 - 插件选择错误:
removeStyleElement插件的作用是移除SVG中的<style>标签,而你要移除的是元素上的style属性,这个插件对此无效。 - 插件重复配置:同时启用
removeViewBox和removeAttrs中的viewBox规则,可能导致冲突(核心问题还是语法错误)。
修正后的配置文件
将配置文件修改为以下内容:
module.exports = { plugins: [ { name: "removeAttrs", params: { attrs: ["style", "viewBox"] } } ] }
- 使用
removeAttrs插件直接指定要移除的属性数组,同时处理style和viewBox - 移除了无效的
removeStyleElement和重复的removeViewBox插件
执行原命令svgo filename.svg --config=configfile.js,即可成功移除目标属性。
问题2:Windows下通配符
*.svg未被识别 原因分析
Windows的命令提示符(CMD)不会自动将通配符*.svg展开为具体的文件名,而是直接将*.svg作为文件名传递给SVGO,导致SVGO找不到对应文件。
解决方法
方法1:使用PowerShell执行命令
打开PowerShell,进入SVG文件所在目录,执行:
svgo *.svg --config=configfile.js
PowerShell会自动处理通配符,将其展开为目录下所有SVG文件。
方法2:在CMD中使用for循环批量处理
在CMD中执行以下命令:
for %f in (*.svg) do svgo "%f" --config=configfile.js
该命令会遍历目录下所有SVG文件,逐个调用SVGO处理。
方法3:通过npm脚本批量处理
如果项目中有package.json,可以添加如下脚本:
{ "scripts": { "svgo:batch": "svgo *.svg --config=configfile.js" } }
然后执行npm run svgo:batch,npm会自动处理通配符。
内容的提问来源于stack exchange,提问作者Y.OWR
相关产品推荐
相关产品推荐

