SRI 的完整性和跨源值是否保存在 package.json 或其他地方?

Are SRI's integrity and crossorigin values kept in package.json or elsewhere?

这是bootstrap的官方CDN样式表:

<link rel="stylesheet" 
      href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css"
      integrity="sha384-Smlep5jCw/wG7hdkwQ/Z5nLIefveQRIY9nfy6xoR1uRYBtpZgI6339F5dgvm/e9B"
      crossorigin="anonymous">

然而,在我的标记中,我没有对版本进行硬编码,因为它可以改变,所以我将它从我的构建系统或应用程序中提取出来。一个虚构的例子:

<link rel="stylesheet" href="https://foo.bar.com/jquery/$VERSION/all.min.js" />

如您所见,$VERSION 没有硬编码。因此,我可以在构建过程中更改我正在使用的版本(在 package.json 中),而不必编辑我的应用程序。

现在我想用同样的方法添加integrity。我希望我能在 package.json 中找到它,但是对于 bootsrap 例如它不存在。我也假设其他包裹。

我知道我可以 calculate it 像这样:

echo -n "alert('Hello, world.');" | openssl dgst -sha384 -binary | openssl base64 -A

但我不想让我的构建系统过于复杂。

有没有什么地方我可以从中获取这个值,而不必对其进行硬编码?我从我的项目 package.json(或 node_modules/bootstrap 中的那个)自动提取版本,所以我希望为完整性做一些类似的事情。

由于无法从 package.json 或包目录中的其他地方轻松访问该值,因此我使用 ssri npm module.

更多工作,但似乎没有更好的方法。