webpack 源码 - seal hook 之代码生成
来源:coolheadedY     阅读:492
源码超市
发布于 2019-06-11 04:32
查看主页

compilation.seal 实例方法

功能

核心功能

生成代码 createChunkAssets()

createChunkAssets 是 compilation 实例方法

createChunkAssets 主要流程

getRenderManifest, mainTemplate 实例生成 manifest

什么是 manifest

manifest 保存着 chunk 对应相关 module 的映射信息, 可以看到这个 manifest 中的 chunk0 包含了所有生成它的 module 信息,还增加了通过 modules 生成 chunk 代码的 render 函数

生成代码 source , fileManifest.render

source = fileManifest.render(); 执行到 MainTemplate 的 render 实例方法中,这个方法通过 render hook 生成一个 source, source.children 数组中可以看出是与 webpack 最终生成代码类似的内容了,不过其中文件 module 用了 // CONCATENATED MODULE 注释标识,源码也在 ReplaceSource 实例对象中

manifest.render 流程

Template.renderChunkModules 生成 ReplaceSource 实例标记 CONCATENATED MODULE

moduleTemplate.render

通过 module.source 创立 moduleSource, 这里就是我们需要的 module 代码内容, 最后打包返回到 compoilation.js 赋值给对应的 assets[file]


module.source 收集 module 信息, 返回 module 对应代码

收集 module 信息 modulesWithInfo

遍历 modulesWithInfo 组装 module 代码 ReplaceSource 实例标记 CONCATENATED MODULE

赋值 assets

source 由 fileManifest.render 最终生成赋值到 compoilation 实例的 assets[file] 上,最后调用 chunkAsset hook 对 source 源码进行压缩

总结 webpack 的代码生成

免责声明:本文为用户发表,不代表网站立场,仅供参考,不构成引导等用途。 系统环境 服务器应用
相关推荐
人工智能之Python人脸识别技术,人人都能做识别!
前台周报:NGINX之父再遭起诉并索赔 7.5 亿美元;滴滴一技术总监4年累计受贿千万;TCP/IP库曝出漏洞,影响全球数亿设施
用Storyboard Reference简化storyboard
Navicat 连接MySQL8.0出现2059错误
css3菜鸟教程学习笔记_CSS3 边框/圆角/盒阴影
首页
搜索
订单
购物车
我的