Plugins 网页包-将资产添加到统计数据

Plugins 网页包-将资产添加到统计数据,plugins,webpack-2,babeljs,Plugins,Webpack 2,Babeljs,我对构建网页包插件还是有点陌生,所以我有一个关于如何正确地向编译中添加资产的问题 我正在构建这个插件: 它非常简单,将编译后的文件重新编译,然后用babel将它们转换成fx ES 5兼容文件(我知道…这看起来很奇怪…为什么在项目自述中) 这实际上运行得很好,但是我的资产没有显示在网页包的Stats部分(例如compiler.getStats()) 我正在将重新编译的资产添加到compilation.assets列表中,但只有我的初始条目文件和动态命名块显示在stats对象中 那么,我如何使我重新

我对构建网页包插件还是有点陌生,所以我有一个关于如何正确地向编译中添加资产的问题

我正在构建这个插件:
它非常简单,将编译后的文件重新编译,然后用babel将它们转换成fx ES 5兼容文件(我知道…这看起来很奇怪…为什么在项目自述中)

这实际上运行得很好,但是我的资产没有显示在网页包的
Stats
部分(例如
compiler.getStats()

我正在将重新编译的资产添加到
compilation.assets
列表中,但只有我的初始条目文件和动态命名块显示在stats对象中


那么,我如何使我重新编译的资产显示在网页包
stats
部分呢?

因此,经过深入研究,我认为我找到了解决问题的方法。 似乎我还需要将新创建的资产添加为块,并更改其中文件引用的名称

因此,下面的代码似乎解决了这个问题:

function addPrefixToFile(prefix, file) {
  return file.replace(/(^|[/\\])([^/\\]+)$/, `$1${prefix}$2`);
}

const files = chunks.reduce((arr, chunk) => {
  if(!chunk.rendered) { return arr; }

  // Create chunk copy
  const copy = Object.assign(Object.create(chunk), {
    name: chunk.name ? `${prefix}${chunk.name}` : chunk.name,
    files: (chunk.files || []).map((file) => addPrefixToFile(file)),
    parents: chunk.parents.map(
      (parent) => Object.assign({}, parent, {
        files: (parent.files || []).map((file) => addPrefixToFile(file))
      })
    )
  });

  chunkCopies.push(copy);
}, []);

// ... further down the line ...
chunks.push(...chunkCopies);

对我来说,这似乎有点老套,所以我想知道是否有更好的方法来做到这一点。但是。。。它可以工作。

注意:我必须使用
Object.create
在块上复制它的所有方法。