webpack的基本使用

webpack的基本使用

一、什么是webpack

概念: webpack是前端工程化的具体解决方案

主要工能: 它提供了友好的 前端模块化开发 支持,以及 **代码压缩混淆、处理浏览器端Javascript的兼容性、性能优化 ** 等强大的功能。

二、webpack的基本使用

  1. 在项目根目录中,创建名为webpack.config.js的webpack配置文件,并初始化如下的基本配置:
module.exports = {
    //webpack的运行模式,可选择development和production
    //development:开发阶段选择
    //production:项目发布阶段使用
    mode: 'development'
}
  1. package.jsonscripts 节点下新增dev脚本

     "scripts": {
        "dev": "webpack"
      },
    

    **script下的脚本可以通过npm run执行 如 npm run dev **

  2. 在终端中运行 npm run dev 命令,启动webpack进行项目的打包构建

webpack.config.js文件的作用

  1. webpack.config.jswebpack 的配置文件。webpack在真正开始打包构建之前,会先读取这个配置文件,从而基于给定的配置,对项目进行打包。

    注意: 由于webpack 是基于node.js 开发出来的打包工具,因此在它的配置文件中,支持使用node.js 相关的语法和模块进行webpack 的个性化配置。

webpack 中的默认约定

在webpack 4.x和5.x的版本中,有如下的默认约定:

  • 默认的打包入口文件为src-> index.js
  • 默认的输出文件路径为dist-> main.js
  • **注意:**可以在webpack.config.js 中修改打包的默认约定

自定义打包的入口与出口

webpack.config.js 配置文件中,通过entry节点指定打包的入口。通过output节点指定打包的出口。

在这里插入图片描述

三、webpack中的插件

1. 插件的作用

通过安装和配置第三方的插件,可以拓展webpack的能力,从而让webpack用起来更方便。最常用的webpack插件有如下两个:

webpack-dev-server

  • 类似于node.js阶段用到的nodelmon工具
  • 每当修改了源代码,webpack会自动进行项目的打包和构建

html-webpack-plugin

  • webpack中的HTML插件(类似于一个模板引擎插件)
  • 可以通过此插件自定制index.html页面的内容
安装webpack-dev-server
  1. npm i install webpack-dev-server@3.11.2 -D
  2. 配置webpack-dev-server

修改package.json-> scripts中的dev命令如下:

"scripts": {
    "dev": "webpack serve"
  },

再次运行npm run dev 命令,重新进行项目的打包

注意:webpack-dev-server会启动一个实时打包的http服务器

安装html-webpack-plugin
  1. npm install html-webpack-plugin@5.3.2 -D
  2. 配置html-webpack-plugin

在这里插入图片描述

  1. 解惑html-webpack-plugin
    • 通过HTML插件复制到项目根目录中的index.html页面,也被放到了内存中
    • HTML插件在生成的index.html页面,自动注入了打包的bundle.js文件
devServer节点

在webpack.config.js配置文件中,可以通过devserver节点对webpack-dev-server插件进行更多的配置,

在这里插入图片描述

注意:凡是修改了webpack.config.js配置文件,或修改了package.json配置文件,必须重启实时打包的服务器,否则最新的配置文件无法生效!

四、webpack中的loader

在实际开发过程中,webpack默认只能打包处理以.jsl后缀名结尾的模块。其他非js后缀名结尾的模块,webpack默认处理不了,需要调用loader加载器才可以正常打包,否则会报错!、

loader加载器的作用:协助webpack打包处理特定的文件模块。比如:

  • css-loader可以打包处理.css相关的文件
  • less-loader可以打包处理.less相关的文件
  • babel-loader可以打包处理webpack无法处理的高级J5语法

在这里插入图片描述

打包处理css文件
  1. 运行npm i style-loader@3.0.0 css-loader@5.2.6-D 命令,安装处理css文件的loader
  2. webpack.config.js的module-> rules数组中,添加loader规则如下:

在这里插入图片描述

其中,test表示匹配的文件类型,use表示对应要调用的loader

注意:

  • use数组中指定的loader顺序是固定的
  • 多个loader的调用顺序是:从后往前调用
  1. webpack默认只能打包处理.js结尾的文件,处理不了其它后缀的文件
  2. 由于代码中包含了index.css这个文件,因此webpack默认处理不了
  3. 当webpack发现某个文件处理不了的时候,会查找webpack.config.js这个配置文件.看module.rules数组中,是否配置了对应的loader加载器.
  4. webpack把index.css这个文件,先转交给最后一个loader进行处理(先转交给css-loader)
  5. 当ess-loader处理完毕之后,会把处理的结果,转交给下一个loader(转交给style-loader)
  6. 当style-loader处理完毕之后,发现没有下一个loader7,于是就把处理的结果,转交给了webpack
  7. webpack把style-loader处理的结果,合并到/dist/bundle.js中,最终生成打包好的文件.
打包处理less文件
  • 运行npm i less-loader@10.0.1 less@4.1.1-D命令

  • webpack.config.js的module-> rules数组中,添加loader规则如下:

在这里插入图片描述

打包处理样式表中与url路径相关的文件

运行npm i url-loader@4.1.1 file-loader@6.2.0 -D命令

webpack.config.js的module-> rules数组中,添加loader规则如下:

在这里插入图片描述

其中?之后的是loader的参数项:

  • limit用来指定图片的大小,单位是字节(byte)
  • 只有小于等于limit大小的图片,才会被转为base64格式的图片
打包处理js文件中的高级语法

webpack只能打包处理一部分JavaScript语法,对于那些无法处理的高级的js语法,需要借助于 babel-loader 进行打包处理。

运行npm i babel-loader@8.2.2 @babel/core@7.14.6 @babel/plugin-proposal-decorators@7.14.5 -D

在这里插入图片描述

  • 配置babel-loader
  • 在项目根目录下,创建名为babel.config.js的配置文件,定义Babel的配置
  • 在这里插入图片描述
打包发布

配置package.json文件scripts节点下,新增

在这里插入图片描述

清除文件夹

运行npm i --save-dev clean-webpack-plugin 命令

  • 配置文件

  • 在webpack.config.js中

在这里插入图片描述

Sourcs Map

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值