Laravel Mix内置的SVG优化选项引起了我的问题,特别是关于trumbowyg
的问题,当Laravel Mix复制经过SVG优化的文件时,icons.svg
文件没有被优化,或者, SVG输出完全为空。
因此,我使用svgo
CLI进行了修复,实际上我发现问题是由removeUselessDefs: true
选项/插件引起的,因此,如果将其设置为false,我会得到优化的SVG文件,不会损坏。
当我不知道如何将该选项放入Laravel Mix时,另一个问题开始了。目前,为了至少可以“正常工作”,我已将svgo
的{{1}}从img-loader
完全禁用,我什至不确定自己是否以正确的方式进行了操作,但这是可行的: / p>
mix.options({
imgLoaderOptions: {
svgo: false
},
});
默认情况下,imgLoaderOptions
会有svgo: {}
,但显然这些括号都不是svgo
选项的,而且我也找不到imgLoaderOptions
上的任何文档参数/值。
与此同时,我更深入地研究了这一过程:
Laravel Mix
调用webpack
并开始读入资产,捕获.svg
,使用img-loader
加载。默认情况下,img-loader
具有用于SVG文件的图像优化库,称为imagemin-svgo
,它依赖于svgo
库。经过imagemin-svgo
优化之后,文件最终通过webpack
复制到目标文件夹,其中,没有任何选择,优化后几乎是一个空文件:
icons.svg经过imagemin-svgo优化后:
<svg xmlns="http://www.w3.org/2000/svg"/>
长话短说,我必须能够传递imagemin-svgo
或svgo
本身的选项,因为我不想简单地禁用整个选项优化。