Вот так я отформатировал свой jsx.
JSX
<picture>
<source srcSet={`${baseUrl.public}img/rsgis-logo.webp`} type="image/webp" />
<source srcSet={`${baseUrl.public}img/rsgis-logo.png`} type="image/png" />
<img src={`${baseUrl.public}img/rsgis-logo.png`} className="rsgis-logo" alt="RS&GIS Logo" />
</picture>
Webpack
Я сделал мой веб-пакет немного по-другому. webp-загрузчик работал хорошо для меня, за исключением того факта, что он не передавал png в выходной каталог.
С webp-загрузчиком:
loaders: [
{
test: /\.(jpe?g|png)$/i,
loaders: [
'file-loader',
'webp-loader?{quality: 80}'
]
}
]
Веб-загрузчик преобразует изображения в формат веб-страниц.Затем поместите изображения в каталог output / img (я не указывал расположение вывода выше, поскольку у меня сейчас нет кода на моем лице)
Затем, чтобы получить pngs в выходной каталог, я использовалплагин веб-пакета CopyWebpackPlugin .Это берет каталог и помещает его в выходной каталог.
plugins: [
...,
new CopyWebpackPlugin([
{ from: "./src/images/png", to: "./img" }
]),
...
],
После того, как я сделал эту реализацию, я решил сделать обратное.Мне не понравился веб-загрузчик.Я закончил преобразование своих изображений через CLI с помощью инструмента webp и использовал CopyWebpackPlugin
для перемещения файлов webp в выходной каталог.Затем мне пришлось обработать мои изображения через веб-пакет, используя загрузчик файлов
{
test: /\.(svg|gif|jpe?g|png)$/i,
use: [{
loader: "file-loader",
options: {
name: "/img/[name].[ext]"
}
}]
},
plugins: [
...,
new CopyWebpackPlugin([
{ from: "./src/images/webp", to: "./img" }
]),
...
],
Надеюсь, это немного поможет!