-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnext.config.js
72 lines (70 loc) · 1.94 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
const typescript = require('@zeit/next-typescript');
const sass = require('@zeit/next-sass');
const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
const optimizedImages = require('next-optimized-images');
const withPlugins = require('next-compose-plugins');
const bundleAnalyzer = require('@zeit/next-bundle-analyzer');
const offline = require('next-offline');
const sourceMaps = require('@zeit/next-source-maps')();
const nextConfig = {
target: 'serverless',
webpack: (config, options) => {
// Do not run type checking twice:
if (options.isServer) {
config.plugins.push(new ForkTsCheckerWebpackPlugin({
tslint: './tslint.json',
}));
}
return config
},
};
module.exports = withPlugins([
[sourceMaps],
[sass, {
cssLoaderOptions: {
importLoaders: 1,
localIdentName: '[name]__[local]:[hash:base64:5]',
},
cssModules: true,
}],
[typescript],
[optimizedImages, {
handleImages: ['jpeg', 'png', 'svg'],
}],
[bundleAnalyzer, {
analyzeBrowser: ['browser', 'both'].includes(process.env.BUNDLE_ANALYZE),
analyzeServer: ['server', 'both'].includes(process.env.BUNDLE_ANALYZE),
bundleAnalyzerConfig: {
browser: {
analyzerMode: 'static',
reportFilename: '../bundles/client.html'
},
server: {
analyzerMode: 'static',
reportFilename: '../bundles/server.html'
}
}
}],
[offline, {
workboxOpts: {
runtimeCaching: [
{
handler: 'NetworkFirst',
options: {
cacheName: 'https-calls',
cacheableResponse: {
statuses: [0, 200],
},
expiration: {
maxAgeSeconds: 30 * 24 * 60 * 60, // 1 month
maxEntries: 150,
},
networkTimeoutSeconds: 15,
},
urlPattern: /^https?.*/,
},
],
swDest: 'static/service-worker.js',
}
}],
], nextConfig);