(1)简介

  webpack4+(简介+基础配置+配置文件名)_配置文件

  可以做的事情

1、代码转换:将ES6转为ES5;将CSS、Less、Sass等转化为CSS;
2、文件优化:文件打包过程里压缩代码体积,合并文件
3、代码分割:公共模块的抽离、路由懒加载
4、模块合并:按照功能分类,将多个模块合并为一个模块
5、自动刷新:启动webpack服务,实现代码变更后的自动刷新,即热更新
6、代码校验:校验代码合理性
7、自动发布:将打包结果发布到服务器上

  webpack4+(简介+基础配置+配置文件名)_当前目录_02

   webpack4+(简介+基础配置+配置文件名)_配置文件_03

1、webpack常见配置
2、webpack高级配置
3、webpack优化策略
4、ast抽象语法树:如何解析语法层面的东西
5、webpack中的Tapable:掌握Tapable事件流,因为webpack主要就是依靠各种钩子,而钩子主要依靠Tap库实现
6、掌握webpack流程,手写webpack
7、手写webpack里常见loader
8、手写webpack里常见的plugin

  

   

 

(2)基础配置+普通js文件打包

  1、安装:

对于大多数项目,我们建议本地安装。这可以使我们在引入破坏式变更(breaking change)的依赖时,更容易分别升级项目。
通常,webpack 通过运行一个或多个 npm scripts,会在本地 node_modules 目录中查找安装的 webpack:

  webpack4+(简介+基础配置+配置文件名)_自定义_04

  本地webpack版本访问:

当你在本地安装 webpack 后,你能够从 node_modules/.bin/webpack 访问它的 bin 版本。

  webpack4+(简介+基础配置+配置文件名)_js模块化_05

  因为webpack 和 webpack-cli属于开发依赖,上线部署时不会用到,所以下载--save-dev或者-D。首先进行初始化(目的用于记录安装依赖),然后开始安装

1、npm init -y
2、npm i webpack webpack-cli -D

  2、配置

  接下来开始进行配置,webpack为打包工具

源码--->识别JS模块,进行打包输出

  一般源码存在src目录下,所以新建src目录,然后建立index.js文件

  webpack4+(简介+基础配置+配置文件名)_配置文件_06 webpack4+(简介+基础配置+配置文件名)_当前目录_07

  接下来开始进行打包,如下所示,关于npx详见浅谈npx&&npx和npm之间的关系.

npx webpack,执行后的步骤分析如下

  一、首先回去找到node_modules/bin文件

   webpack4+(简介+基础配置+配置文件名)_js模块化_08

 

   判断如果当前目录下有node.exe,则会使用当前目录下的node.exe来执行文件。因为当前目录下没有,所以会走else,去执行上级的相关文件,即node ../wenpack/bin/webpack.js

  webpack4+(简介+基础配置+配置文件名)_配置文件_09

  接着,在该文件内部会检测是否安装webpack-cli,如果没有则会提示用户进行安装

  webpack4+(简介+基础配置+配置文件名)_配置文件_10

 

   所以在webpack4+版本以上,需要同时安装webpack和webpack cli。执行打包命令,如下所示

  webpack4+(简介+基础配置+配置文件名)_js模块化_11

 

   接着会自动生成dist/main.js文件,如下所示

  webpack4+(简介+基础配置+配置文件名)_自定义_12

 

  因为webpack主要功能就是打包,而打包主要就是为了解决js模块化的问题,所以接下来进行模块化打包验证

 

(3)模块化打包

  1、Commonjs模块化打包

  webpack4+(简介+基础配置+配置文件名)_模块化_13

  webpack4+(简介+基础配置+配置文件名)_配置文件_14 webpack4+(简介+基础配置+配置文件名)_js模块化_15

  接下来进行打包验证

npx webpack,输出结果部分如下

  webpack4+(简介+基础配置+配置文件名)_js模块化_16

  然后执行测试下打包输出文件main.js,这里测试有两者方法webpack测试打包文件的两种方式.,简单测试如下

  webpack4+(简介+基础配置+配置文件名)_模块化_17

  每次打包都会有如下提示

  webpack4+(简介+基础配置+配置文件名)_js模块化_18

  这里警告我们没有配置mode模式,默认采用production生产模式,输出代码经过了压缩丑化。

或者mode设置如下
    选项为“development开发”或“production生产”以启用每个环境的默认设置。
    也可以将其设置为“ none”以禁用任何默认行为

  接下来用浏览器测试下,即新建Index.html文件,引入脚本

  webpack4+(简介+基础配置+配置文件名)_配置文件_19

 

   然后开启服务,进行测试

  webpack4+(简介+基础配置+配置文件名)_js模块化_20

  webpack4+(简介+基础配置+配置文件名)_js模块化_21

 

  分析:

打包后的结果,可以直接在浏览器环境里运行。此时webpack帮我们实现了一个功能:“帮助解析JS模块,并且以当前jS为准,查找所有相关依赖文件,将多个依赖文件打包成一个文件。
间接帮助我们解决了浏览器的require问题,相当于自己实现了一套模块化机制”

  上述便是webpack默认0配置,相关文件名称都是固定的,所以接下来自定义webpack配置。当然也支持ES Module即ES6模块化、AMD、CMD等规范

  

   

(4)自定义webpack配置

1、默认配置文件名为webpack.config.js,否则使用webpack --config 配置文件名
2、webpack是有node编写的,所以配置文件采用node即CommonJS规范进行编写

  设置好入口和出口配置后,接下来我们规定下mode,因为当前是开发环境,所以不用压缩代码,我们想看源码格式,所以将mode设置为development

  webpack4+(简介+基础配置+配置文件名)_当前目录_22

  接下来打包运行,如下

npx webpack
或者
webpack

  因为mode模式设置的是生产模式development,所以打包后的代码没有经过压缩丑化,如下所示

  webpack4+(简介+基础配置+配置文件名)_js模块化_23

   对比文件大小,也会发现文件大了很多

  webpack4+(简介+基础配置+配置文件名)_模块化_24

   

(5)配置文件名

  开发推荐webpack配置文件名为webpack,为什么呢?

  1、node_modules下默认运行webpack依赖,而webpack默认会调用webpack-cli

  webpack4+(简介+基础配置+配置文件名)_js模块化_25

  2、webpack-cli默认配置文件名如下

  webpack4+(简介+基础配置+配置文件名)_自定义_26

 

 

  

 

 

  

  

  

 

  

   

   

 

  

  

 

   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.