-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathnext.config.mjs
More file actions
78 lines (74 loc) · 1.71 KB
/
Copy pathnext.config.mjs
File metadata and controls
78 lines (74 loc) · 1.71 KB
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
import remarkGfm from 'remark-gfm';
import rehypePrettyCode from 'rehype-pretty-code';
import rehypeSlug from 'rehype-slug';
/** @type {import('rehype-pretty-code').Options} */
const prettyCodeOptions = {
theme: {
light: 'github-light',
dark: 'houston',
},
keepBackground: true,
defaultLang: 'plaintext',
};
/** @type {import('next').NextConfig} */
const nextConfig = {
reactStrictMode: true,
pageExtensions: ['js', 'jsx', 'md', 'mdx', 'ts', 'tsx'],
images: {
formats: ['image/avif', 'image/webp'],
},
async redirects() {
return [
{
source: '/blog',
destination: '/engineering',
permanent: true,
},
{
source: '/series',
destination: '/engineering?type=series',
permanent: true,
},
];
},
async headers() {
return [
{
source: '/fonts/:path*',
headers: [
{
key: 'Cache-Control',
value: 'public, max-age=31536000, immutable',
},
],
},
{
source: '/images/posts/:path*',
headers: [
{
key: 'Cache-Control',
value: 'public, max-age=31536000, immutable',
},
],
},
];
},
webpack: (config, options) => {
config.module.rules.push({
test: /\.mdx?$/,
use: [
options.defaultLoaders.babel,
{
loader: '@mdx-js/loader',
options: {
remarkPlugins: [[remarkGfm, { singleTilde: false }]],
rehypePlugins: [rehypeSlug, [rehypePrettyCode, prettyCodeOptions]],
},
},
],
});
return config;
},
};
// Bundle analyzer is optional - only use if ANALYZE=true
export default nextConfig;