Как настроить параметры для svgo в конфигурации laravel mix?
Опция оптимизации SVG, встроенная Laravel Mix, вызывает у меня проблемы, особенно trumbowyg
, когда Laravel Mix копирует файл, который подвергается оптимизации SVG, icons.svg
Файл неправильно оптимизирован, или, скорее, имеет совершенно пустой вывод SVG.
Поэтому я пошел искать исправление, используя svgo
CLI, я на самом деле узнал, что проблема была вызвана removeUselessDefs: true
опция / плагин, поэтому, если я установлю это в false, я получу оптимизированный файл SVG, который НЕ сломан.
Еще одна проблема началась, когда я не мог понять, КАК поместить эту опцию в Laravel Mix. В настоящее время для вещей, чтобы хотя бы "работать" я отключил svgo
от img-loader
полностью, что я даже не уверен, правильно ли я это сделал, но вот что работает для этого:
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
само по себе, так как я не хочу просто отключить всю оптимизацию.