【发布时间】:2016-05-07 15:22:21
【问题描述】:
我正在开发一个 webpack 插件,但不知道如何在构建过程中修改模块。我正在尝试做的事情:
- 通过自定义加载器收集数据(很好)
- 加载所有模块后,收集我的加载器收集的数据(很好)
- 将我生成的代码插入到构建中的现有模块中(按如下所述执行此操作,不确定是否是最佳方式)
- “更新”该模块,以便解析我添加的代码并将其“要求”转换为 webpack 要求调用(无法弄清楚如何正确执行此操作)
目前我在编译器上连接到“this-compilation”,然后在编译上连接到“additional-chunk-assets”。抓取第一个块(目前唯一一个,因为我仍在开发中),遍历该块中的模块以找到我想要修改的模块。那么:
- 将我生成的源附加到模块的 _cachedSource.source._source._value(我也尝试附加到模块的 ._source._value)
- 将 ._cachedSource.hash 设置为空字符串(因为这似乎是下一步工作所必需的)
- 我将模块传递给 .rebuildModule()
看起来rebuildModule 应该重新解析源代码,重新建立依赖关系等等,但它没有解析我的require 语句并将它们更改为webpack 要求。构建的文件包含我修改后的源代码,但 require('...') 语句未修改。
如何使我修改过的模块“更新”,以便 webpack 将我添加的源与最初解析的源相同?除了rebuildModule() 之外我还需要做些什么吗?我在构建过程中做这项工作是否为时已晚?还是我走错路了?
【问题讨论】:
标签: webpack