Created
September 29, 2018 16:52
-
-
Save Wind213/12c1e4b58c13dc50c5fcf59d14926b7e to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Important modules this config uses | |
const path = require('path') | |
const HtmlWebpackPlugin = require('html-webpack-plugin') | |
const WebpackPwaManifest = require('webpack-pwa-manifest') | |
const OfflinePlugin = require('offline-plugin') | |
const { HashedModuleIdsPlugin } = require('webpack') | |
module.exports = require('./webpack.base.babel')({ | |
mode: 'production', | |
// In production, we skip all hot-reloading stuff | |
entry: [path.join(process.cwd(), 'app/app.js')], | |
// Utilize long-term caching by adding content hashes (not compilation hashes) to compiled assets | |
output: { | |
path: path.join(__dirname, '../build'), | |
filename: '[name].[chunkhash].js', | |
chunkFilename: '[name].[chunkhash].chunk.js', | |
publicPath: '/' | |
}, | |
optimization: { | |
minimize: true, | |
nodeEnv: 'production', | |
sideEffects: true, | |
concatenateModules: true, | |
splitChunks: { | |
chunks: "async", | |
minSize: 30000, | |
minChunks: 1, | |
maxAsyncRequests: 5, | |
maxInitialRequests: 3, | |
name: true, | |
cacheGroups: { | |
default: { | |
minChunks: 2, | |
priority: -20, | |
reuseExistingChunk: true, | |
}, | |
vendors: { | |
test: /[\\/]node_modules[\\/]/, | |
name: 'vendors', | |
enforce: true, | |
chunks: 'all', | |
} | |
}, | |
}, | |
runtimeChunk: true | |
}, | |
plugins: [ | |
// Minify and optimize the index.html | |
new HtmlWebpackPlugin({ | |
template: 'app/index.html', | |
minify: { | |
removeComments: true, | |
collapseWhitespace: true, | |
removeRedundantAttributes: true, | |
useShortDoctype: true, | |
removeEmptyAttributes: true, | |
removeStyleLinkTypeAttributes: true, | |
keepClosingSlash: true, | |
minifyJS: true, | |
minifyCSS: true, | |
minifyURLs: true | |
}, | |
inject: true | |
}), | |
// Put it in the end to capture all the HtmlWebpackPlugin's | |
// assets manipulations and do leak its manipulations to HtmlWebpackPlugin | |
new OfflinePlugin({ | |
relativePaths: false, | |
publicPath: '/', | |
appShell: '/', | |
// No need to cache .htaccess. See http://mxs.is/googmp, | |
// this is applied before any match in `caches` section | |
excludes: ['.htaccess'], | |
caches: { | |
main: [':rest:'], | |
// All chunks marked as `additional`, loaded after main section | |
// and do not prevent SW to install. Change to `optional` if | |
// do not want them to be preloaded at all (cached only when first loaded) | |
additional: ['*.chunk.js'] | |
}, | |
// Removes warning for about `additional` section usage | |
safeToUseOptionalCaches: true | |
}), | |
new WebpackPwaManifest({ | |
name: 'Komiksea', | |
short_name: 'Komiksea', | |
description: 'Komiksea your komik friend!', | |
background_color: '#fafafa', | |
theme_color: '#b1624d', | |
inject: true, | |
ios: true, | |
icons: [ | |
{ | |
src: path.resolve('app/images/icon-512x512.png'), | |
sizes: [72, 96, 120, 128, 144, 152, 167, 180, 192, 384, 512] | |
}, | |
{ | |
src: path.resolve('app/images/icon-512x512.png'), | |
sizes: [120, 152, 167, 180], | |
ios: true | |
} | |
] | |
}), | |
new HashedModuleIdsPlugin({ | |
hashFunction: 'sha256', | |
hashDigest: 'hex', | |
hashDigestLength: 20 | |
}) | |
], | |
performance: { | |
assetFilter: assetFilename => | |
!/(\.map$)|(^(main\.|favicon\.))/.test(assetFilename) | |
} | |
}) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment