在js文件中使用编译哈希

时间:2017-11-23 10:06:29

标签: webpack webpack-2 html-webpack-plugin

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

var compilationHash = <%= webpack.hash %>

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

我希望ProvidePlugin在这里可以派上用场,但不知道如何在那里访问编译哈希。

1 个答案:

答案 0 :(得分:3)

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

虽然我怀疑为什么你需要在bundle中包含hash,你可以通过webpack来访问你在HTML中分配的变量,而不需要插件。 global

这是由webpack分配到捆绑包本身在其中执行的任何范围,在您的window之类的网页中,因此您可以通过global.compilationHash

访问您的变量

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