webpack 基础配置笔记

Webpack 简介
Webpack 是一个静态资源打包器,简单说就是将浏览器不能识别的模块,比如import,less,打包编译成浏览器可以识别的文件。
Webpack 有5个核心概念
1.Entry 项目打包入口文件
2. Output 打包后资源命名输出目录
3. Loader 让webpack处理那些非js文件,如img
4. plugins 内置一些功能插件,主要是为了优化压缩,如压缩图片
5. Mode 分为生产环境和开发环境,各个环境配置不同
用的loader都要安装下载,这是webpack.config.js 文件内容,基础配置,无优化

const { resolve } = require("path");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const htmlWebpackPlugin = require("html-webpack-plugin");
/* 插件介绍,1.HMR :hot module replacement  热替换  作用:一个模块发生变化,只会重新打包这一个模块。devServer 中 hot:true 开发环境 
                    样式文件:可以直接用,style-loader 内置
                      js: 要做特殊处理,各个绑定,具体查
                   
*/ 
module.exports = {
  //webpack 配置
  //入口起点
  entry: "./src/index.js",
  output: {
    //输出路径
    filename: "build.js",
    //_dirname nodejs的变量,代表当前文件的目录的绝对路径
    path: resolve(__dirname, "build"),
  },
  //loader配置
  module: {
    rules: [
      {
        test: /\.css$/, // 匹配那些文件
        use: [
          //use数组执行顺序,重下到上依次执行
          "style-loader", //创建style标签,添加上去,这边会改成js,如果要提取css单独文件,用下面那个
          // MiniCssExtractPlugin.loader  用这个以后,style-loader不能使用,取代style-loader
          "css-loader", //将css文件变成commomj模块加载js中,样式字符串

          /*处理兼容性
          postcss--> postcs-loader postcss-preset-env
          插件主要帮 postcss找到package.json 中browserslist 里面的配置,通过配置加载指定的css样式   
                 "browserslist":{
                     "development":[
                       "last 1 chrom version",
                        "last 1 firefox version",
                        "last 1 safari version"
                       ],
                     "production":[
                           ">0.2%",
                           "not dead",
                           "not op_mimi all"
                       ]
                      }
      browserslist的基础配置,兼容大部分浏览器,更复杂的看文档
          */

          {
            //要配置的话写对象里,注意这个解析less时候的放置顺序
            loader: "postcss-loader",
            options: {
              ident: "postcss",
              plugins: () => {
                // postcss 插件
                require("postcss-preset-env")();
              },
            },
          },
        ],
      },
      {
        test: /\.less$/, // 匹配那些文件
        use: [
          //use数组执行顺序,重下到上依次执行
          "style-loader", //创建style标签,添加上去

          "css-loader", //将css文件变成commomj模块加载js中,样式字符串
          "less-loader",
        ],
      },
      {
        test: /\.(jpg|png|gif)$/, //不能处理html中的图片,要想处理要用html-loader
        loader: "url-loader", //下载 url-loader(基于file-loader) 和 file-loader ,只用一个loader不用use
        options: {
          //配置文件大小,图片大小小于8K,就会base64处理
          //优点:减少请求数量(减轻服务器压力)
          //缺点: 图片体积会更大(文件请求速度更慢)
          limit: 8 * 1024,
          name: "[hash:10].[ext]", //改变输出的图片名字。太长
          outputPath: "imgs", //生成的文件存放在那个文件夹
        },
      },
      {
        test: /\.js$/,   // js兼容性,如果用了 eslint,要注意使用顺序,先检验 eslint
        exclude:/node_modiles/, //处理时候除去
        loader: "babel-loader", 
        options: {  //写规则
         presets:[   //要下载一个 @babel/polyfill,不然只能兼容简单的,个 @babel/polyfill很大,所以按需,所以要core.js
           [
             '@babel/prest-env',
             {
               useBuiltIns:'usage',  //按需加载
               corejs:{version:3 },  //corejs 版本
               targets:{  //浏览器
                  chrom:'60',
                  firefox:'50'
               }
             }
           ]
         ],
         cacheDirectory:true    //缓存,避免重复
        },
      },
      //
    ],
  },
  //插件配置
  plugins: [
    new MiniCssExtractPlugin(),
    new htmlWebpackPlugin({
      template: "./src/index.html",//会将所有打包资源引入此html
      minify:{
        collapseWhitespace:true,   // 移除空格
        removeComments:true  // 移除注释
      }

    }),
  ],
  mode: "development", //开发模式,生产模式会自动压缩代码
  //   mode:"pr",命令 webpack 和 webpack-dev-serve 一个打包成文件,一个是本地调试
  devServer: {
    conotentBase: resolve(__dirname, "build"),
    //项目构建后路径
    compress: true, //启动gzip压缩
    port: 8000,
    open: true,
    hot:true
  },
};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值