-
Notifications
You must be signed in to change notification settings - Fork 21
/
next.config.mjs
104 lines (98 loc) · 2.71 KB
/
next.config.mjs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
/** @type {import('next').NextConfig} */
// import remarkGfm from "remark-gfm";
// import createMDX from "@next/mdx";
// import mdxMermaid from "mdx-mermaid";
// import { Mermaid } from "mdx-mermaid/lib/Mermaid";
import "./scripts/processChallengeMarkdown.js";
import "./scripts/processSolidityMarkdown.js";
import "./scripts/processContentMarkdown.js";
import "./scripts/processEventsMarkdown.js";
/** @type {import('next').NextConfig} */
const nextConfig = {
pageExtensions: ["js", "jsx", "mdx", "ts", "tsx"],
images: {
deviceSizes: [600, 900, 1200, 1536],
},
// trailingSlash: true,
eslint: {
ignoreDuringBuilds: true,
},
// eslint-disable-next-line
webpack: (
config,
{ buildId, dev, isServer, defaultLoaders, nextRuntime, webpack },
) => {
config.ignoreWarnings = [
function ignoreSourcemapsloaderWarnings(warning) {
return (
warning.module &&
warning.module.resource.includes("node_modules") &&
warning.details &&
warning.details.includes("source-map-loader")
);
},
];
// Grab the existing rule that handles SVG imports
const fileLoaderRule = config.module.rules.find((rule) =>
rule.test?.test?.(".svg"),
);
config.module.rules.push(
...[
{
test: /\.mjs$/,
include: /node_modules/,
type: "javascript/auto",
resolve: {
fullySpecified: false,
},
},
{
...fileLoaderRule,
test: /\.svg$/i,
resourceQuery: /url/, // *.svg?url
},
{
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",
params: {
overrides: {
removeViewBox: false,
},
},
},
],
},
},
},
],
},
// .md
{
test: /\.md$/,
use: "raw-loader",
},
],
);
fileLoaderRule.exclude = /\.svg$/i;
return config;
},
};
// TODO: client rendering now, no need this
// const withMDX = createMDX({
// extension: /\.mdx?$/,
// options: {
// remarkPlugins: [remarkGfm, [mdxMermaid.default, { output: "svg" }]],
// rehypePlugins: [],
// components: { mermaid: Mermaid, Mermaid },
// },
// });
export default nextConfig;