-
Notifications
You must be signed in to change notification settings - Fork 7
/
next.config.js
118 lines (111 loc) · 3.23 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
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
// This file sets a custom webpack configuration to use your Next.js app
// with Sentry.
// https://nextjs.org/docs/api-reference/next.config.js/introduction
// https://docs.sentry.io/platforms/javascript/guides/nextjs/
// TODO: Migrate next.config.js to TypeScript or ESM
// eslint-disable-next-line no-undef, @typescript-eslint/no-require-imports
const { withSentryConfig } = require("@sentry/nextjs");
const moduleExports = {
reactStrictMode: true,
experimental: {
modern: true,
scss: false,
optimizeDeps: {
include: ["react/jsx-runtime"],
},
},
webpack: (config, context) => {
config.module.rules.push({
test: /\.md$/,
use: [
{
loader: "raw-loader",
options: {
esModule: false,
},
},
],
});
if (config.plugins) {
config.plugins.push(
new context.webpack.IgnorePlugin({
resourceRegExp: /^(lokijs|pino-pretty|encoding)$/,
}),
);
}
return config;
},
async headers() {
return [
{
source: "/",
headers: [
{
key: "Cache-Control",
value: "public; max-age=60, stale-while-revalidate=600",
},
],
},
{
source: "/:other",
headers: [
{
key: "Cache-Control",
value: "public; max-age=60, stale-while-revalidate=600",
},
],
},
{
source: "/api/holdings/:kind",
headers: [
{
key: "Cache-Control",
value: "public; max-age=30, stale-while-revalidate=360",
},
],
},
{
source: "/api/targets",
headers: [
{
key: "Cache-Control",
value: "public; max-age=90, stale-while-revalidate=360",
},
],
},
{
source: "/api/:any",
headers: [
{
key: "Cache-Control",
value: "public; max-age=5, stale-while-revalidate=20",
},
],
},
];
},
sentry: {
// Use `hidden-source-map` rather than `source-map` as the Webpack `devtool`
// for client-side builds. (This will be the default starting in
// `@sentry/nextjs` version 8.0.0.) See
// https://webpack.js.org/configuration/devtool/ and
// https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/#use-hidden-source-map
// for more information.
hideSourceMaps: true,
},
};
const sentryWebpackPluginOptions = {
// Additional config options for the Sentry Webpack plugin. Keep in mind that
// the following options are set automatically, and overriding them is not
// recommended:
// release, url, org, project, authToken, configFile, stripPrefix,
// urlPrefix, include, ignore
silent: false, // Suppresses all logs
// For all available options, see:
// https://github.com/getsentry/sentry-webpack-plugin#options.
};
// Make sure adding Sentry options is the last code to run before exporting, to
// ensure that your source maps include changes from all other Webpack plugins
// TODO: Migrate next.config.js to TypeScript or ESM
// eslint-disable-next-line no-undef
module.exports = withSentryConfig(moduleExports, sentryWebpackPluginOptions);