如何在laravel混合配置中为svgo设置选项?

时间:2018-08-17 20:02:44

标签: svg webpack laravel-mix imagemin trumbowyg

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-svgosvgo本身的选项,因为我不想简单地禁用整个选项优化。

0 个答案:

没有答案