-
Notifications
You must be signed in to change notification settings - Fork 700
Expand file tree
/
Copy pathnext.config.js
More file actions
82 lines (75 loc) · 2.59 KB
/
next.config.js
File metadata and controls
82 lines (75 loc) · 2.59 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
79
80
81
82
const withBundleAnalyzer = require('@next/bundle-analyzer')({
enabled: process.env.BUNDLE_ANALYZER === 'true',
});
const withRoutes = require('nextjs-routes/config')({
outDir: 'nextjs',
});
const headers = require('./nextjs/headers');
const redirects = require('./nextjs/redirects');
const rewrites = require('./nextjs/rewrites');
/** @type {import('next').NextConfig} */
const moduleExports = {
transpilePackages: [
'react-syntax-highlighter',
],
reactStrictMode: true,
// Turbopack config (Next.js 16 default bundler) – mirrors webpack customizations below
turbopack: {
rules: {
'*.svg': {
loaders: [ '@svgr/webpack' ],
as: '*.js',
},
},
// Stub Node built-ins only in browser bundles; Node (SSR, instrumentation) keeps real modules
resolveAlias: {
fs: { browser: './nextjs/empty-module.js' },
net: { browser: './nextjs/empty-module.js' },
tls: { browser: './nextjs/empty-module.js' },
},
},
// Used when BUNDLE_ANALYZER=true (run: next build --webpack) or for custom webpack tooling
webpack(config) {
config.module.rules.push(
{
test: /\.svg$/,
use: [ '@svgr/webpack' ],
},
);
config.resolve.fallback = { fs: false, net: false, tls: false };
config.externals.push('pino-pretty', 'lokijs', 'encoding');
config.experiments = { ...config.experiments, topLevelAwait: true };
// Tell webpack the target supports async/await so it stops warning about top-level await
// Top-level await is belong to ES2017 specification that is adopted by all major browsers and Node.js.
config.output.environment = {
...config.output.environment,
asyncFunction: true,
};
return config;
},
// NOTE: all config functions should be static and not depend on any environment variables
// since all variables will be passed to the app only at runtime and there is now way to change Next.js config at this time
// if you are stuck and strongly believe what you need some sort of flexibility here please fill free to join the discussion
// https://github.com/blockscout/frontend/discussions/167
rewrites,
redirects,
headers,
output: 'standalone',
productionBrowserSourceMaps: false,
serverExternalPackages: [
'@opentelemetry/sdk-node',
'@opentelemetry/auto-instrumentations-node',
'pino-pretty',
'lokijs',
'encoding',
],
experimental: {
staleTimes: {
dynamic: 30,
'static': 180,
},
},
// workaround for passing outDir to nextjs-routes CLI
outDir: 'nextjs',
};
module.exports = withBundleAnalyzer(withRoutes(moduleExports));