这是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来说,它不在那里。我认为其他包裹也是如此。
我知道我可以这样计算:
echo -n "alert('Hello, world.');" | openssl dgst -sha384 -binary | openssl base64 -A
但我不想使我的构建系统过于复杂。
有没有什么地方可以让我在不需要硬编码的情况下获得这个值?我自动从我的项目的package.json
(或node_modules/bootstrap
中的那个(中提取版本,所以我希望为了完整性做一些类似的事情。
由于无法从package.json
或包目录中的其他位置轻松访问该值,因此我使用了ssri-npm模块。
更多的工作,但似乎没有更好的方法。