-
Notifications
You must be signed in to change notification settings - Fork 21
/
Copy pathnext.config.ts
58 lines (53 loc) · 1.64 KB
/
next.config.ts
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
import type { NextConfig } from 'next'
import withBundleAnalyzer from '@next/bundle-analyzer'
import withPWA from './next-pwa'
const IS_VERCEL = !!process.env.NEXT_PUBLIC_VERCEL_URL;
const IS_PRODUCTION = process.env.NODE_ENV === 'production';
const withBundleAnalyzerConfig = {
enabled: process.env.ANALYZE === 'true',
};
const withPWAConfig = {
dest: "public",
disable: !IS_PRODUCTION,
register: false,
buildExcludes: ["app-build-manifest.json"],
skipWaiting: false,
cacheStartUrl: false,
dynamicStartUrl: false,
reloadOnOnline: false,
fallbacks: {
document: "/offline",
},
};
const nextConfig: NextConfig = {
reactStrictMode: false,
distDir: process.env.BUILD_DIR || '.next',
webpack: (config, { isServer }) => {
if (isServer) {
config.externals.push('canvas');
}
if (IS_VERCEL) {
config.externals.push('puppeteer');
}
config.module.rules.push({
test: /\.(woff|woff2|eot|ttf|otf)$/i,
type: "asset/resource",
resourceQuery: /url/,
});
return config
},
async headers() {
return [
{
source: "/(.*)\.woff2",
headers: [
{ key: "Access-Control-Allow-Credentials", value: "true" },
{ key: "Access-Control-Allow-Origin", value: "*" },
{ key: "Access-Control-Allow-Methods", value: "GET,OPTIONS,PATCH,DELETE,POST,PUT" },
{ key: "Access-Control-Allow-Headers", value: "X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version" },
]
}
]
}
};
export default withBundleAnalyzer(withBundleAnalyzerConfig)(withPWA(withPWAConfig)(nextConfig));