赞
踩
webpack中使用 loader-runner 插件处理 loader 的收集和执行
loader-runner:4.2.0
loader-runner 导出两个方法:
1.runLoaders
runLoaders中 iteratePitchingLoaders(遍历 loader 的 pitch,并执行 pitch 方法),iterateNormalLoaders (遍历 loader ,执行 loader 导出的方法)
通过如下简单示例分析:
(1)生成全局对象 loaderContext
(2)生成 loader 的 数组对象
(3)调用 iteratePitchingLoaders
iteratePitchingLoaders 根据 loaderContext.loaderIndex 和 loaderContext.loaders.length 遍历 loaders,
loadLoader 方法 读取了 loader 的文件,并且将读取的结果赋值到了 loaders{} 的 normal 字段上,
loaderContext.loaderIndex >= loaderContext.loaders.length 时 执行 processResource
processResource 函数 调用 options.processResource(调用 runLoaders 传入的 processResource 或者 runLoaders 函数中声明的 processResource 方法),options.processResource 主要获取需要解析文件的文件流,以及将文件 push 到 fileDependencies 遍历,获取到文件后调用 processResource 的回调函数
iterateNormalLoaders 函数 将 需要解析的文件的 buffer 转为 字符串,根据 loaderContext.loaders[loaderContext.loaderIndex] 执行 loader 导出的函数 (loader 从右向左),直到loaderContext.loaderIndex < 0
runLoaders 的 回调函数中能拿到 loaderContext, resourceBuffer,fileDependencies等数据
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。