forked from solana-foundation/developer-content
-
Notifications
You must be signed in to change notification settings - Fork 3
/
next.config.js
66 lines (62 loc) · 1.55 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
60
61
62
63
64
65
66
// @ts-check
/** @type {import('next').NextConfig} */
const { withContentlayer } = require("next-contentlayer");
const redirectsJson = require("./redirects.json");
module.exports = withContentlayer({
reactStrictMode: true,
eslint: {
// Warning: This allows production builds to successfully complete even if
// your project has ESLint errors.
// ignoreDuringBuilds: true,
},
compiler: {
styledComponents: true,
},
swcMinify: true,
// webpack5: true,
webpack: config => {
config.resolve.fallback = { fs: false, path: false };
return config;
},
images: {
remotePatterns: [
{
protocol: "https",
hostname: "**",
},
],
},
async redirects() {
return [
// handle language based routes
{
source: "/:lang(\\w{2}\\-\\w{2})/:path*",
destination: "/:path*",
permanent: true,
},
{
source: "/:lang(\\w{2})/:path*",
destination: "/:path*",
permanent: true,
},
// common solana docs
...redirectFormatter("https://solana.com/", redirectsJson["common-docs"]),
// validator client docs
...redirectFormatter(
"https://docs.solanalabs.com/",
redirectsJson["solana-client"],
),
];
},
});
/**
* Format the NextJS redirects
*/
function redirectFormatter(basePath, redirects, permanent = true) {
return redirects.map(item => {
item.basePath = false;
item.permanent = item.permanent ?? permanent;
item.destination = `${basePath}${item.destination}`;
return item;
});
}