-
Notifications
You must be signed in to change notification settings - Fork 0
/
next.config.js
98 lines (82 loc) · 2.35 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
// https://nextjs.org/docs/#custom-configuration
const path = require('path')
const webpack = require('webpack')
const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer')
const withPlugins = require('next-compose-plugins')
const withTranspileModules = require('next-transpile-modules')([
])
const withBundleAnalyzer = require('./withBundleAnalyzer')
let env
switch (process.env.NODE_ENV) {
case 'production':
env = 'PROD'
break
case 'staging':
env = 'STAGING'
break
case 'development':
env = 'DEV'
break
default:
env = 'DEV'
break
}
const nextConfig = {
target: 'serverless',
/**
* If some of the envs are public, like a google maps key, but you still
* want to keep them secret from the repo, the following code will allow you
* to share some variables with the client, configured at compile time.
*/
env: {
ENV: env,
// Public token, not a secret
mapBoxToken:
"pk.eyJ1Ijoia3VudWtuIiwiYSI6ImNrMHh2ZWFqazA0NWIzbXA0MnZxZXUxNmgifQ.M1ilooWxj_UOk41ZoAXTtg",
},
};
module.exports = withPlugins(
[
[
withTranspileModules,
{
webpack(config, options) {
process.env.BUNDLE_ANALYZE &&
config.plugins.push(new BundleAnalyzerPlugin())
// Fixes npm packages that depend on `fs` module
config.node = {
fs: 'empty',
}
config.module.rules.push({
test: /\.test.js$/,
loader: 'ignore-loader',
})
config.module.rules.push({
test: /\.svg$/,
use: ['@svgr/webpack'],
})
config.module.rules.push({
test: /\.(eot|woff|woff2)$/,
loader: 'ignore-loader',
})
const usePolyfill = true
if (usePolyfill) {
// https://stackoverflow.com/a/53311389/815507
// https://github.com/zeit/next.js/issues/2060#issuecomment-385199026
const originalEntry = config.entry
config.entry = async () => {
const entries = await originalEntry()
return entries
}
}
return config
},
},
],
[nextConfig],
process.env.BUNDLE_ANALYZE && [
// https://github.com/zeit/next-plugins/tree/master/packages/next-bundle-analyzer
withBundleAnalyzer,
],
].filter(Boolean)
)