-
Notifications
You must be signed in to change notification settings - Fork 0
/
webpack.prod.config.ts
109 lines (107 loc) · 2.8 KB
/
webpack.prod.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
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
99
100
101
102
103
104
105
106
107
108
109
import path from 'path';
import webpack from 'webpack';
//@ts-ignore
import StatsPlugin from 'stats-webpack-plugin';
import { GenerateSW } from 'workbox-webpack-plugin';
import PwaManifest from 'webpack-pwa-manifest';
const config: webpack.Configuration = {
mode: 'production',
output: {
filename: '[name].[contenthash].js',
chunkFilename: '[name].[contenthash].[id].bundle.js'
},
plugins: [
new webpack.optimize.AggressiveMergingPlugin(),
new StatsPlugin('stats.json', {
chunkModules: true
}),
new PwaManifest({
filename: 'manifest.webmanifest',
name: 'mlb-transaction-tracker',
short_name: 'mtt',
description: 'transaction tracker',
theme_color: '#2196f3',
background_color: '#2196f3',
display: 'standalone',
scope: '/',
ios: true,
start_url: './',
icons: [
{
src: path.resolve('assets', 'icons', 'icon.png'),
sizes: [96, 128, 192, 256, 384, 512]
},
{
src: path.resolve('assets', 'icons', 'icon.png'),
sizes: [36, 48, 72, 96, 144, 192, 512],
destination: path.join('icons', 'android')
},
{
src: path.resolve('assets', 'icons', 'icon.png'),
sizes: [120, 152, 167, 180, 1024],
destination: path.join('icons', 'ios'),
ios: true
},
{
src: path.resolve('assets', 'icons', 'icon.png'),
size: 1024,
destination: path.join('icons', 'ios', 'startup')
// ios: 'startup'
}
]
}),
new GenerateSW({
globDirectory: 'dist',
globPatterns: ['*.{html,js,jpg}'],
swDest: path.resolve('dist', 'sw.js'),
clientsClaim: true,
skipWaiting: true,
runtimeCaching: [
{
urlPattern: '/',
handler: 'NetworkFirst' as const,
options: {
cacheName: 'page',
expiration: {
maxAgeSeconds: 60 * 60 * 24
}
}
},
{
urlPattern:
'https://lookup-service-prod.mlb.app/json/named.transaction_all.bam',
handler: 'NetworkFirst' as const,
options: {
cacheName: 'api',
expiration: {
maxAgeSeconds: 60 * 60 * 24
}
}
},
{
urlPattern: /\.(png|svg|woff|ttf|eot)/,
handler: 'CacheFirst' as const,
options: {
cacheName: 'assets',
expiration: {
maxAgeSeconds: 60 * 60 * 24 * 14
}
}
}
]
})
],
optimization: {
splitChunks: {
cacheGroups: {
vendor: {
test: /node_modules/,
name: 'vendor',
chunks: 'initial',
enforce: true
}
}
}
}
};
export default config;