1
0
mirror of https://github.com/kremalicious/portfolio.git synced 2024-06-29 00:57:41 +02:00
portfolio/next.config.js

52 lines
1.4 KiB
JavaScript
Raw Normal View History

// @ts-check
const next = (phase, { defaultConfig }) => {
/**
* @type {import('next').NextConfig}
*/
const nextConfig = {
webpack: (config, options) => {
2023-08-16 13:43:54 +02:00
// Grab the existing rule that handles SVG imports
const fileLoaderRule = config.module.rules.find((rule) =>
rule.test?.test?.('.svg')
)
config.module.rules.push(
2023-08-16 13:43:54 +02:00
// Reapply the existing rule, but only for svg imports ending in ?url
{
2023-08-16 13:43:54 +02:00
...fileLoaderRule,
test: /\.svg$/i,
resourceQuery: /url/ // *.svg?url
},
2023-08-16 13:43:54 +02:00
// Convert all other *.svg imports to React components
{
2023-08-16 13:43:54 +02:00
test: /\.svg$/i,
issuer: /\.[jt]sx?$/,
resourceQuery: { not: /url/ }, // exclude if *.svg?url
use: [{ loader: '@svgr/webpack', options: { icon: true } }]
}
)
2023-08-16 13:43:54 +02:00
// Modify the file loader rule to ignore *.svg, since we have it handled now.
fileLoaderRule.exclude = /\.svg$/i
config.module.rules.push({
test: /\.gif$/,
// yay for webpack 5
// https://webpack.js.org/guides/asset-management/#loading-images
type: 'asset/resource'
})
return typeof defaultConfig.webpack === 'function'
? defaultConfig.webpack(config, options)
: config
2022-11-16 20:04:06 +01:00
},
// https://nextjs.org/docs/api-reference/next.config.js/react-strict-mode
reactStrictMode: true
}
return nextConfig
}
export default next