阅读 webpack 源码

2021-04-22  本文已影响0人  littleyu

webpack@5.10.1
webpack-cli@4.2.0
阅读源码小技巧:折叠所有代码,先不看所有的变量声明和 require,要是之后用到再看,直接看主要逻辑。
带着问题看源码

第一个问题

  1. 首先当我们运行 webpack-cli 命令的时候,会去执行 bin/cli.js 。
  2. 折叠文件所有代码,跳过 require 和所有声明,第一个 if 不看,之后的 if else 就需要打开来看了,因为这段话必定要执行,我们先假设 webpack 存在,进入 runCli 这个函数。
  3. 折叠所有代码,直接看主分支 try catch 里面,主要调用了 cli.run 这个方法。
  4. 进入 cli.run,第一个方法 this.runOptionGroups(args) 从名字可以看出和配置项相关,所以跳过,最后发现执行了 this.createCompiler 这个函数。
  5. 进入 createCompiler 并折叠函数,我们发现他其实就是调用了 webpack 这个函数。
阅读全过程

第二个问题

阅读全过程
  1. 直接看 webpack 的 package.json 的 main 属性,可以得知入口是 lib/index.js。
  2. 进入 index.js,主要是导出了一个函数,这个函数又是从 './webpack' 里面的。
  3. 进入 './webpack',也是主要导出了一个webpack 这个函数,第一个函数 validateSchema 是验证函数(不看),然后是 一个 if else,一般我们用 webpck 的时候,options 一般都不会是一个数组,所以我们看 else,执行了 一个 createCompiler 函数。
  4. 懵逼了,凭我目前的认知,看不懂这套逻辑了,createCompiler 就是 return 了一个 new Compiler,compiler.hooks.xxx.call 干了什么,猜测主要逻辑应该在这个里面(排除法)。

hooks.xxx.call 是什么

教训:看源码时,遇到不懂的,要快速学会

新的第二个问题

流程图待补充

第三个问题

第四个问题

第五个问题

第六个问题

第七个问题

第八个问题

第九个问题

第十个问题

小结

上一篇下一篇

猜你喜欢

热点阅读