123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- import withMDX from '@next/mdx';
- import env from './env.js';
- /** @type {import('next').NextConfig} */
- export default withMDX()({
- output: 'export',
- images: {
- unoptimized: true,
- },
- env: env,
- pageExtensions: ['js', 'jsx', 'mdx', 'ts', 'tsx'],
- webpack(config) {
- // Grab the existing rule that handles SVG imports
- const fileLoaderRule = config.module.rules.find((rule) =>
- rule.test?.test?.('.svg'),
- );
- config.module.rules.push(
- // Reapply the existing rule, but only for svg imports ending in ?url
- {
- ...fileLoaderRule,
- test: /\.svg$/i,
- resourceQuery: /url/, // *.svg?url
- },
- // Convert all other *.svg imports to React components
- {
- test: /\.svg$/i,
- issuer: fileLoaderRule.issuer,
- resourceQuery: { not: [...fileLoaderRule.resourceQuery.not, /url/] }, // exclude if *.svg?url
- use: [
- {
- loader: '@svgr/webpack',
- options: {
- svgoConfig: {
- plugins: [{ name: 'preset-default' }],
- },
- },
- },
- ],
- },
- );
- // Modify the file loader rule to ignore *.svg, since we have it handled now.
- fileLoaderRule.exclude = /\.svg$/i;
- return config;
- },
- });
|