我需要在laravel mix上配置构建SVG sprite
我在webpack下尝试了几个库,result = 0
。
有人可以建议如何配置吗?
在 webpack.mix.js 或 app.js 中编写处理程序代码的位置?
答案 0 :(得分:2)
我能够使用Laravele Mix& amp; SVG-spritemap-的WebPack的插件。
首先安装spritemap插件
npm install svg-spritemap-webpack-plugin --save-dev
然后像这样添加配置webpack.mix.js
:
const mix = require('laravel-mix');
const SVGSpritemapPlugin = require('svg-spritemap-webpack-plugin');
// Set up the spritemap plugin
mix.webpackConfig({
plugins: [
new SVGSpritemapPlugin({
src:'assets/svg/icons/*.svg',
filename: '/svg/icons.svg',
prefix: '',
svg4everybody: true,
svgo: {
removeTitle: true,
removeStyleElement: true,
cleanupNumericValue: true,
},
})
]
});
// Adapt laravel-mix webpack config to better handle svg images.
Mix.listen('configReady', (webpackConfig) => {
// Add separate svg loader
webpackConfig.module.rules.push({
test: /\.(svg)$/,
include: /assets\/svg/,
loaders: [
{
loader: 'file-loader',
options: {
name: 'svg/[name].[ext]?[hash]',
publicPath: Config.resourceRoot
}
},
{
loader: 'img-loader',
options: Config.imgLoaderOptions
}
]
});
// Exclude local 'svg' folder from font loader
let fontLoaderConfig = webpackConfig.module.rules.find(rule => String(rule.test) === String(/\.(woff2?|ttf|eot|svg|otf)$/))
fontLoaderConfig.exclude = /(assets\/svg)/;
});
使用此功能您应该能够将* .svg文件添加到/resources/assets/svg/*.svg
中并复制到公共文件并获取由/resources/assets/svg/icons/*.svg
生成的svg精灵