两种配置模式:

(1)webpack.dev.js
(2)webpack.pro.js

一、开发环境配置

  1. const { resolve } = require('path');
  2. const autoprefixer = require('autoprefixer');
  3. const HtmlWebpackPlugin = require('html-webpack-plugin');
  4. const { CleanWebpackPlugin } = require('clean-webpack-plugin');
  5. module.exports = {
  6. entry: './main.js',
  7. output: {
  8. filename: 'boundle.js',
  9. path: resolve(__dirname, 'dist')
  10. },
  11. module: {
  12. rules: [
  13. {
  14. test: /\.vue$/,
  15. loader: 'vue-loader'
  16. },
  17. {
  18. test: /\.js$/,
  19. use: {
  20. // webpack 和 babel之间的桥梁
  21. loader: 'babel-loader'
  22. },
  23. // 不编译nodule_modules模块中的代码
  24. exclude: /node_modules/
  25. },
  26. {
  27. test: /\.css$/,
  28. loader: [
  29. 'style-loader',
  30. 'css-loader',
  31. {
  32. loader: 'postcss-loader',
  33. options: {
  34. postcssOptions: {
  35. plugins: [autoprefixer]
  36. }
  37. }
  38. }
  39. ]
  40. },
  41. {
  42. // 处理图片
  43. test: /\.(png|jpg|gif)$/i,
  44. use: [
  45. {
  46. loader: 'url-loader',
  47. options: {
  48. name: '[name].[ext]',
  49. outputPath: 'imgs/',
  50. limit: 8192
  51. }
  52. }
  53. ]
  54. },
  55. {
  56. test: /\.scss$/,
  57. loader: [
  58. 'style-loader',
  59. 'css-loader',
  60. {
  61. loader: 'postcss-loader',
  62. options: {
  63. postcssOptions: {
  64. plugins: [autoprefixer]
  65. }
  66. }
  67. },
  68. 'sass-loader'
  69. ]
  70. },
  71. // 处理字体图标文件
  72. {
  73. test: /\.(eot|svg|ttf|woff)/,
  74. use: {
  75. loader: 'file-loader',
  76. options: {
  77. outputPath: 'fonts/'
  78. }
  79. }
  80. }
  81. ]
  82. },
  83. plugins: [
  84. new HtmlWebpackPlugin({
  85. template: resolve(__dirname, './src/index.html')
  86. }),
  87. new CleanWebpackPlugin()
  88. ]
  89. };
const webpack = require('webpack');
const { merge } = require('webpack-merge'),
  commBase = require('./webpack.base');

const webpack_dev = {
  mode: 'development',
  devServer: {
    contentBase: './dist',
    open: true,
    // 开启热更新
    hot: true,
    port: '3000'
  },
  // 开启tree shaking
  optimization: {
    usedExports: true
  },
  devtool: 'cheap-module-eval-source-map',
  plugins: [new webpack.HotModuleReplacementPlugin()]
};

module.exports = merge(webpack_dev, commBase);

二、生产环境配置

const { merge } = require('webpack-merge');
const commBase = require('./webpack.base');

const webpack_prod = {
  mode: 'production',
  // 开启tree shaking
  devtool: 'cheap-module-source-map'
};

module.exports = merge(webpack_prod, commBase);

三、配置命令

image.png

3.1 配置公共文件:

开发环境 和 生产环境 一样的配置文件将其中的内容提取出来

3.1.1 webpack-merge

npm i webpack-merge -D
可以合并两个默认的webpack配置,具体查看github的用法
image.png
开发环境的配置信息
image.png 公共的配置 image.png