【问题标题】:output.filename impacted by output.chunkFilename?受 output.chunkFilename 影响的 output.filename?
【发布时间】:2018-06-29 09:55:44
【问题描述】:

我正在设置一个 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 之间是否存在某种问题?

提前致谢!

【问题讨论】:

    标签: webpack webpack-4


    【解决方案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

    【讨论】:

    • 感谢您发布此信息。我也在设置一个具有完全相同要求的 .NET Core 项目——引用我的入口文件,但仍然从分块中受益。
    猜你喜欢
    • 1970-01-01
    • 2015-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-30
    • 1970-01-01
    • 2010-11-10
    相关资源
    最近更新 更多