-
-
Notifications
You must be signed in to change notification settings - Fork 209
/
Copy pathnext.config.js
78 lines (68 loc) · 1.61 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
const { version } = require("./package.json")
const { PHASE_DEVELOPMENT_SERVER, PHASE_PRODUCTION_BUILD } = require("next/constants")
const rulesToProcess = [/\.m?js/, /\.(js|cjs|mjs)$/].map(String)
const dirToIgnore = /tools/
/** @type {import("next").NextConfig} */
const nextConfig = {
reactStrictMode: true,
output: "standalone",
publicRuntimeConfig: {
version
},
images: {
unoptimized: true,
remotePatterns: [
{
protocol: "https",
hostname: "**"
}
]
},
webpack(config) {
config.resolve.fallback = {
// if you miss it, all the other options in fallback, specified
// by next.js will be dropped.
...config.resolve.fallback,
fs: false // the solution
}
config.module.rules = config.module.rules.map((rule) => {
if (rule !== "..." && rulesToProcess.indexOf(String(rule.test)) > -1) {
rule.exclude = [dirToIgnore]
}
return rule
})
return config
},
env: {
BUILD_MODE: process.env.BUILD_MODE
}
}
/** @type {(phase: string, defaultConfig: import("next").NextConfig) => Promise<import("next").NextConfig>} */
module.exports = async (phase) => {
let config = nextConfig
if (phase === PHASE_DEVELOPMENT_SERVER) {
config = {
...config,
headers: () => [
{
source: "/:path*",
headers: [
{
key: "Cache-Control",
value: "no-store"
}
]
}
]
}
}
if (phase === PHASE_DEVELOPMENT_SERVER || phase === PHASE_PRODUCTION_BUILD) {
const withSerwist = (await import("@serwist/next")).default({
swSrc: "src/sw.js",
swDest: "public/sw.js",
reloadOnOnline: false
})
return withSerwist(config)
}
return config
}