1. / 不同文件必须配置不同loader处理;
  2. / use数组中loader执行顺序:从右到左,从下到上,依次执行
  3. / resolve用来拼接绝对路径的方法
  4. const {resolve} = require('path')
  5. module.exports = {
  6. // 入口文件
  7. entry:'./src/index.js',
  8. // 输出
  9. output:{
  10. // 输出文件名
  11. filename:'built.js',
  12. //输出路径 __dirname node.js的变量,代表当前文件的目录绝对路径
  13. path:resolve(__dirname,'build')
  14. },
  15. module:{
  16. rules:[
  17. // loader的配置
  18. ]
  19. },
  20. plugins:[
  21. // 详细的plugins的配置
  22. ],
  23. // 模式
  24. mode:'development' //开发模式
  25. }

1-1. 打包样式(css/less)资源

module:{
    rules:[
     {
          test:/\.css$/, 
          // 使用哪些loader进行处理
          use:['style-loader','css-loader']
      },
      {
          // 将less文件编译成css文件
          test:/\.less$/,
          //  需要下载less-loader和less
          use:['style-loader','css-loader','less-loader']
      },
      ]
},

1-2. 打包html资源

/ html资源在plugins中配置
/ HtmlWebpackPlugin用来打包html文件
const HtmlWebpackPlugin = require('html-webpack-plugin')
plugins:[
    // 详细的plugins的配置
    new HtmlWebpackPlugin({
        template:'./src/index.html'
    })
],

1-3. 打包样式中的图片资源

  module:{
    rules:[
      {
          // 问题:默认处理不了html中的img图片
          // 处理图片资源
          test:/\.(jpg|png|gif)$/,
          // 下载url-loader file-loader
          // 使用一个loader
          loader:'url-loader',
          options:{
              // 图片大小小于8kb,就会被base64处理
              // base64优点:减少请求数量(减轻服务器压力)
              // base64缺点:图片体积会更大(文件请求速度更慢)
              limit:8*1024,
              // 问题:因为url-loader默认使用es6模块化解析,而html-loader引入图片是common.js
              // 解析时会出问题:[object Module]
              // 解决:关闭url-loader的es6模块化,使用commonjs解析
              esModule:false,
              // 给图片进行重命名 [hash:10] 取图片的hash的前10位 [ext] 取文件原来扩展名
              name:'[hash:10].[ext]'
          }
      },
    ]
  },

1-4. 处理html文件中的img图片

module:{
  rules:[
    {
        // 处理html文件中的img图片,(负责引入img,从而能被url-loader进行处理)
        test:/\.html$/,
        loader:'html-loader'
    }
  ]
}

1-5. 打包其他资源

module:{
    rules:[
        //exclude 打包其他资源(除了hrml/css/js之外的资源)
        {
            exclude:/\.(css|js|html)$/,
            loader:'file-loader'
        }
    ]
},