To embed the contents of an SVG file into your site using NextJS with the new Rust-based compiler (Turbopack), perform the following steps:
- Install
@svg/webpack
:
$ npm install --save-dev @svgr/webpack
- Add to your webpack config in
next.config.js
with the following options. This will remove the width and height from the SVG but keep the viewBox for correct scaling.
module.exports = {
turbopack: {
rules: {
'*.svg': {
loaders: [
{
loader: '@svgr/webpack',
options: {
svgoConfig: {
multipass: true,
plugins: ['removeDimensions'],
},
},
},
],
as: '*.js',
},
},
},
}
- Import SVG into component
import Logo from 'public/images/logo.svg';
- Use the Component
<Logo className="h-8 w-auto sm:h-10" alt="Site Title" />
works for me!