output.filename是否受output.chunkFilename影响?

时间:2018-06-29 09:55:45

标签: webpack webpack-4

我正在设置一个ASP.NET Core项目,并且希望我的Razor模板包含对我由webpack生成的条目块的引用。

我想要的:

我希望能够从我的Razor模板中引用我的main.jsruntime.js。我得出结论,这样做的一种方法是让Webpack始终为这些文件生成相同的名称。

我做什么:

阅读Webpack的文档,可以阅读有关output.chunkFilename设置的内容:

This option determines the name of non-entry chunk files.

基于这样的假设,在chunkFilename中使用哈希不会影响我的条目文件,因此我使用了以下配置:

output: {
  path: outDir,
  filename: '[name].js',
  chunkFilename: '[name].[chunkhash].js',
  publicPath: 'dist/',
},

发生了什么事:

尽管我得到的是这样:

wwwroot/dist
├───0.3b03e7acfc05abed54e5.js
├───1.3b03e7acfc05abed54e5.js
├───main.3b03e7acfc05abed54e5.js
└───runtime.js

尽管文档中有说明,main入口点仍在散列。我是否错过了某个步骤,误读了文档,或者在filenamechunkFilename之间存在某种问题?

谢谢!

1 个答案:

答案 0 :(得分:1)

好的,为了将来参考,optimization.runtimeChunk: 'single'选项将所有内容弄乱了,并使每个入口点束都遵循output.chunkFilename设置。

具有这些规则:

optimization: {
  runtimeChunk: 'single',
},

output: {
  path: outDir,
  filename: '[name].js',
  chunkFilename: '[name].[contenthash].js',
  publicPath: 'dist/',
},

给出该结构:

wwwroot/dist
├───0.3b03e7acfc05abed54e5.js
├───1.3b03e7acfc05abed54e5.js
├───main.3b03e7acfc05abed54e5.js
└───runtime.js

在删除optimization.runtimeChunk设置的同时,该设置将变为:

wwwroot/dist
├───0.3b03e7acfc05abed54e5.js
├───1.3b03e7acfc05abed54e5.js
└───main.js

回想起来,由于我不希望我的main.js具有哈希值,因此将运行时赋值到一个单独的文件中是没有意义的(最初的原因是the runtime code affects the [contenthash] part of the file name),所以它可能是故意的(尽管很奇怪)行为。

PS:不,不是。 https://github.com/webpack/webpack/issues/6604