webpack.prod.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. const path = require('path')
  2. const webpack = require('webpack')
  3. const MiniCssExtractPlugin = require('mini-css-extract-plugin')
  4. const HtmlWebpackPlugin = require('html-webpack-plugin');
  5. const WebpackMerge = require('webpack-merge')
  6. const baseConfig = require('./webpack.base.js')
  7. module.exports = WebpackMerge.merge(baseConfig, {
  8. mode: 'production',
  9. //开发环境下默认启用cache,在内存中对已经构建的部分进行缓存
  10. //避免其他模块修改,但是该模块未修改时候,重新构建,能够更快的进行增量构建
  11. //属于空间换时间的做法
  12. cache: true,
  13. // 代码入口
  14. entry: {
  15. // 注册界面
  16. main: './src/main.js',
  17. },
  18. output: {
  19. path: path.resolve(__dirname, '../dist/dist/app'),
  20. publicPath: './dist/app/',
  21. filename: 'js/[name].[contenthash:8].js',
  22. chunkFilename: 'js/[name].[contenthash:8].js',
  23. },
  24. devtool: 'source-map',
  25. plugins: (module.exports.plugins || []).concat([
  26. new HtmlWebpackPlugin({
  27. title: 'Prodog',
  28. template: './static/htmls/template.html', // 源模板文件
  29. filename: (process.env.NODE_ENV === 'production') ? '../../index.html' : './index.html', // 输出文件【注意:这里的根路径是module.exports.output.path】
  30. chunks: ['main']
  31. }),
  32. new webpack.LoaderOptionsPlugin({
  33. minimize: true
  34. }),
  35. // CSS 提取
  36. new MiniCssExtractPlugin({
  37. filename: "style/[name].[contenthash:8].css"
  38. }),
  39. ])
  40. })