webpack.prod.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. const webpack = require('webpack')
  2. const merge = require('webpack-merge')
  3. const path = require('path')
  4. const CleanWebpackPlugin = require('clean-webpack-plugin')
  5. const UglifyJSPlugin = require('uglifyjs-webpack-plugin')
  6. const ExtractTextPlugin = require('extract-text-webpack-plugin')
  7. const OfflinePlugin = require('offline-plugin')
  8. const DuplicatePackageCheckerPlugin = require('duplicate-package-checker-webpack-plugin')
  9. const SimpleProgressWebpackPlugin = require('simple-progress-webpack-plugin')
  10. const common = require('./webpack.common.js')
  11. module.exports = merge(common, {
  12. module: {
  13. rules: []
  14. },
  15. plugins: [
  16. new SimpleProgressWebpackPlugin({
  17. format: 'expanded'
  18. }),
  19. new CleanWebpackPlugin([
  20. 'assets/js/*.*',
  21. 'assets/css/*.*',
  22. 'assets/*.js',
  23. 'assets/*.json'
  24. ], {
  25. root: process.cwd(),
  26. verbose: false
  27. }),
  28. new UglifyJSPlugin({
  29. cache: path.join(process.cwd(), '.webpack-cache/uglify'),
  30. parallel: true
  31. }),
  32. new webpack.DefinePlugin({
  33. 'process.env.NODE_ENV': JSON.stringify('production')
  34. }),
  35. new ExtractTextPlugin('css/bundle.css'),
  36. new OfflinePlugin({
  37. publicPath: '/',
  38. externals: ['/'],
  39. caches: {
  40. main: [
  41. 'js/runtime.js',
  42. 'js/vendor.js',
  43. 'js/client.js'
  44. ],
  45. additional: [
  46. ':externals:'
  47. ],
  48. optional: [
  49. 'js/*.chunk.js'
  50. ]
  51. },
  52. safeToUseOptionalCaches: true
  53. }),
  54. new DuplicatePackageCheckerPlugin(),
  55. // Disable Extract Text Plugin stats:
  56. {
  57. apply(compiler) {
  58. compiler.plugin('done', stats => {
  59. if (Array.isArray(stats.compilation.children)) {
  60. stats.compilation.children = stats.compilation.children.filter(child => {
  61. return child.name.indexOf('extract-text-webpack-plugin') !== 0
  62. })
  63. }
  64. })
  65. }
  66. }
  67. ]
  68. })