当前位置: 首页 > 知识库问答 >
问题:

自定义Webpack插件:访问转换代码的钩子

陶英纵
2023-03-14

我正在尝试在一个webpack插件中的某个加载器完成它的工作后,获得文件的加载器转换内容。对于另一个加载器来说,这通常是理想的,但我也需要访问一个钩子,当翻译过程结束时调用这个钩子(因此选择编写一个插件)。我需要一个与emit不同的钩子吗?允许访问转换文件内容的参数的属性是什么?

    compiler.plugin('done', () => {
       // some finalization code
    });

    compiler.plugin('emit', (compilation, callback) => {
      compilation.chunks.forEach((chunk) => {
        chunk.forEachModule((module) => {
          let filename = module.resource;
          // I could load filename from the filesystem, but I need the content
          // of the file that's gone through the loader pipeline (ideally
          // after a certain loader, but I think at the end of the
          // pipeline would also be fine).
        })
     });

我使用的是WebPack3,但我应该能够从WebPack4的解决方案翻译过来。

共有1个答案

杭镜
2023-03-14

最后,我编写了一个插件,它在after-resolve上动态地注入一个加载器(您必须手动检查希望将加载器注入到哪个“模块”中以及它的位置),并且还为done事件安装了一个钩子,以便将所有内容写入磁盘。

 类似资料:
  • 给定maven shade插件资源转换器,我们如何创建自定义的资源转换器? [错误]无法执行项目目标org.apache.maven.plugins:maven-shade-plugin:2.4.1:Shade(默认)foo:无法解析mojo org.apache.maven.plugins:maven-shade-plugin:2.4.1:参数转换器的Shade:无法加载实现提示“test.tr

  • 问题内容: 我有以下代码,其中我使用HashMap(使用两个并行数组)存储键值对(键可以具有多个值)。现在,我必须存储和加载它以备将来使用,这就是为什么我使用文件通道存储和加载它的原因。此代码的问题是:我可以在我的8 GB服务器中存储近1.2亿个键值对(实际上,我可以为JVM分配8 GB中的近5 GB,而这两个并行阵列需要近2.5 GB,其他内存用于我的代码的各种处理)。但是,我必须存储近600/

  • 任务类: 正如您在上面看到的,我有方法,通过gradle运行它可以正常工作: 完整的请访问https://github.com/spring-black/tags/blob/master/build.gradle#L35。

  • 我在关注丹·阿布拉莫夫的这篇文章: https://overreacted.io/making-setinterval-declarative-with-react-hooks/ 在本文中,Dan制作了一个自定义的useInterval钩子,以创建一个动态的setInterval。 钩子看起来像这样: 但有一部分我不明白,那就是: 我理解,如果延迟更改,则调用此useEffect。回调被分配给ti

  • 问题内容: 我需要以使用Qt Designer创建的形式向图形小部件添加一些功能。 例如,我通常会这样做: 但是在这种情况下,图形视图是我在Qt Designer中创建的窗口的一部分。我知道您可以在Qt设计器中使用“升级为”功能,但是我不知道如何在代码中使用它,尤其是考虑到我使用此方法来使用Qt设计器窗口: 那么当我使用Qt Designer时,如何定制窗口中图形视图的代码? 问题答案: 解决此问

  • 问题内容: 我有一个自定义组件,其中包含两个具有自定义尺寸设置方法的TextView(两个文本视图的比例大约为1:2)。由于这是RelativeLayout的子类,因此它没有textSize属性,但是我想知道是否仍然可以在XML实例中为此组件设置属性,然后从AttributeSet中获取要使用的属性与我在构造函数中的自定义方法。 我已经看到了使用自定义属性执行此操作的技术,但是如果我想获取Andr