webpack2.js
总结?1. 文件作用?webpack.js 文件?webpack 方法
- 接收 webpack.config.js 参数 , 返回 compiler 实例
- 初始化参数
- 始化 Compiler 对象实例
- 加载所有配置的插件
- Compiler 模块是 webpack 的主要引擎
- constructor 方法: 初始化一些 hooks
- run 方法
- 执行插件订阅的一系列 hooks
- 创建 Compilation 实例并执行实例的 build(onCompiled)方法(开启一次新的编译)
- onCompiled 回调在确定好输出内容后 , 根据配置确定输出的路径和文件名 , 把文件内容写入到文件系统执行 compiler.run 方法的回调 , 传入 info监听依赖的文件变化 , 如果依赖的文件变化后会开始一次新的编译
- .根据配置中的 entry 找出入口文件
- 从入口文件出发,调用所有配置的 Loader 对模块进行编译
- 再找出该模块依赖的模块 , 再递归本步骤直到所有入口依赖的文件都经过了本步骤的处理
- 根据入口和模块之间的依赖关系 , 组装成一个个包含多个模块的 Chunk
- 再把每个 Chunk 转换成一个单独的文件加入到输出列表
- 执行成功后的回调
- 初始化参数:从配置文件和 Shell 语句中读取并合并参数,得出最终的配置对象(命令行优先级高)
- 用上一步得到的参数初始化 Compiler 对象
- 初始化 options 参数和 hooks ( run: new SyncHook(), //在开始编译之前调用...)
- 加载所有配置的插件:
- 在配置中找到 plugins 数组
- 遍历 plugins 执行每个插件的 apply 方法 , 并把 compiler 实例传进去(每个插件都有一个 apply 方法)
- 执行 compiler.hooks.run.tap等方法注册事件
- 执行compiler实例的 run 方法开始执行编译
- 整个过程伴随着触发插件的注册个各种钩子函数 this.hooks.done.call()...
- 开启一次新的编译 , 创建一个新的 Compilation 实例
- 执行实例的 build 方法 , 传入完成的回调
- 根据配置中的 entry 找出入口文件
- 格式化入口文件 , 变成对象形式
- 对入口进行遍历 , 获取入口文件的绝对路径 , 添加到文件依赖列表中
- loader 转换:从入口文件出发,调用所有配置的 Loader 对模块进行转换 (最终返回 module 对象)
- 读取处理文件的内容
- 根据规则找到所有的匹配的 loader
- 调用所有配置的 Loader 对模块进行转换(从上到下 , 从右向左)
- 获取当前模块模块 id , 相对于根目录的相对路径
- 创建一个 module 对象
- const module = {
id:'./src/entry1.js',
推荐阅读
- 单位行贿罪怎么判?
- 王宝强|曝王宝强前经纪人已出狱!前妻正在办理移民,这是要双宿双飞了?
- |曝王宝强前经纪人已出狱!前妻正在办理移民,这是要双宿双飞了?
- 马蓉|曝宋喆提前出狱,马蓉移民后儿子被质疑,王宝强疑为二人铺路出国
- 翟欣欣|“毒妻”翟欣欣隐瞒婚史,41天骗走1300万,逼死前夫,结局如何?
- 周一围|把温柔给了前女友童蕾,把薄情给了朱丹,周一围的爱究竟多奢侈?
- 董子健|新瓜!曝三字离婚男星和二字冷艳小花婚内出轨,前妻是谁引热议!
- 马蓉|曝王宝强前经纪人已出狱!王宝强加强了安保,马蓉则在加紧办理移民手续
- 易烊千玺|易烊千玺:老中青三代集结,同陈道明靳东2位前辈野外骑马踏春游
- 杨幂|港媒曝刘恺威正在筹办婚礼迎娶李晓峰,杨幂过门不入令前公婆震怒