-
Notifications
You must be signed in to change notification settings - Fork 0
/
next.config.js
59 lines (52 loc) · 1.56 KB
/
next.config.js
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
/** @type {import("next").NextConfig} */
const { i18n } = require("./next-i18next.config");
const path = require("path");
const MonacoWebpackPlugin = require("monaco-editor-webpack-plugin");
const withTM = require("next-transpile-modules")([
// `monaco-editor` isn't published to npm correctly: it includes both CSS
// imports and non-Node friendly syntax, so it needs to be compiled.
"monaco-editor",
]);
const nextConfig = {
reactStrictMode: true,
experimental: { images: { layoutRaw: true } },
images: {
domains: ["127.0.0.1", "localhost"],
},
};
module.exports = withTM({
nextConfig,
i18n,
webpack: (config, { isServer }) => {
const api = path.join(__dirname, "src/api");
// Add TypeScript support for the API directory
if (isServer) {
config.resolve.alias["~"] = api;
}
// Add TypeScript support for the UI directory
const rule = config.module.rules
.find((rule) => rule.oneOf)
.oneOf.find(
(r) =>
// Find the global CSS loader
r.issuer && r.issuer.include && r.issuer.include.includes("_app")
);
if (rule) {
rule.issuer.include = [
rule.issuer.include,
// Allow `monaco-editor` to import global CSS:
/[\\/]node_modules[\\/]monaco-editor[\\/]/,
];
}
if (!isServer) {
config.resolve.alias["~"] = path.join(__dirname, "src/ui");
config.plugins.push(
new MonacoWebpackPlugin({
languages: ["json", "solidity"],
filename: "static/[name].worker.js",
})
);
}
return config;
},
});