uni-app icon indicating copy to clipboard operation
uni-app copied to clipboard

[QA] 编写 `webpack v4 Plugin` 时,如何从 `compilation.assets` 中获取 `wxml` 的Source进行 Update?

Open sonofmagic opened this issue 2 years ago • 1 comments

问题描述 我在编写一个 webpack Plugin 来对生成后的 wxml,jswxss 进行二次处理,现在 jswxss 是可以正常获取到的, 可是 compilation.assets 中获取不到任何的 wxml。 同时本人看了一些源码之后,发现 wxml 似乎不是在 Plugin 中生成的。 特此想问一下uni-app 团队们,寻找一些解决方案。

复现步骤

  apply (compiler: Compiler) {
    // @ts-ignore
    compiler.hooks.compilation.tap(pluginName, (compilation) => {
      compilation.hooks.optimizeChunkAssets.tapPromise(
        pluginName,
        async (_chunks) => {
          const chunks: Chunk[] = _chunks as unknown as Chunk[]
          for (let i = 0; i < chunks.length; i++) {
            const chunk = chunks[i]
            const chunkFiles = chunk.files
            for (let j = 0; j < chunkFiles.length; j++) {
              const file = chunkFiles[j]
              const originalSource = compilation.assets[file]
              console.log(file)
            }
          }
        }
      )
    })
  }

sonofmagic avatar Jan 26 '22 14:01 sonofmagic

我后来的解决方案,还是在 compilationoptimizeChunkAssetscompileremit 进行处理了 不知道官方最佳实践有何推荐?

sonofmagic avatar Jan 28 '22 08:01 sonofmagic