在 js 文件中使用编译哈希

Use compilation hash within js file

我使用 HtmlWebpackPlugin 通过模板生成我的 index.html。我在那里写

var compilationHash = <%= webpack.hash %>

但这当然在html 文件中。同样,我想访问捆绑文件中的相同散列。但显然 webpack 在那里不可用。有没有办法以某种方式将 webpack.hash 提供到文件中,以便我可以像访问它一样访问它 var something = process.env.SOMETHING?

我希望 ProvidePlugin 能在这里派上用场,但不确定如何访问其中的编译哈希。

所以这是先有鸡还是先有蛋。为了生成内容哈希,webpack 需要知道所有的内容,但是如果它能够将哈希作为变量注入到 bundle 本身,那么内容哈希将与它已经计算的不同。

虽然我怀疑为什么你需要 bundle 中的哈希本身,但你可以从 bundle 中访问你在 HTML 中分配的变量,不需要插件,通过 webpack 的global.

这是由 webpack 分配给包本身在其中执行的任何范围,在像您这样的网页中 window,因此您可以通过 global.compilationHash[= 访问您的变量13=]

这有一个警告,即仅在运行时可用,并且除非您提供它,否则它将始终是未定义的(即,如果您的测试需要,您需要在执行使用的代码之前将它提供给测试运行器范围它)