我正在设置一个ASP.NET Core项目,并且希望我的Razor模板包含对我由webpack生成的条目块的引用。
我想要的:
我希望能够从我的Razor模板中引用我的main.js
和runtime.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
入口点仍在散列。我是否错过了某个步骤,误读了文档,或者在filename
和chunkFilename
之间存在某种问题?
谢谢!
答案 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),所以它可能是故意的(尽管很奇怪)行为。