在构建后或部署期间在 ngsw 中重新生成内容哈希
Regenerate content hash in ngsw after build or during deploy
我们有一个使用 angular service worker 的 Angular 应用程序。
正如我们所知,该服务工作者将缓存文件中的内容哈希值与 ngsw.json
文件中的哈希值进行比较。
现在,我们已经设置了持续集成和交付(使用 Azure DevOps,但应该无关紧要)并且在交付阶段,我们正在修改 environment.json
文件中的一些设置(例如颜色方案,API url...都与部署目标有关)。问题是,通过修改 json 文件,散列不再与 ngsw.json
文件中该文件的散列相匹配。
我们绝对不想为专用目标环境重建,因为这违背了 CI/CD 中的目的。 (一旦包进入 QA 流程,您不想为生产环境重建包)。
所以问题是:在我们修改 environment.json
(或任何其他)文件后,有没有办法在 ngsw.json
文件中重新生成哈希值?或者这个问题有其他解决方案吗?
你说的是下面的命令吗:
node_modules/.bin/ngsw-config dist src/ngsw-config.json
您可以将命令放在 package.json:
"scripts": {
"ngsw-config": "node_modules/.bin/ngsw-config dist src/ngsw-config.json"
}
这会为您重做配置和哈希。
运行 在你最后的命令之后,这应该可以在你的 CI 环境中实现。
另请注意,如果您使用其中之一,它可以采用基本 href 参数。
这里有更多解释:Angular doc
无需运送整个 Angular CLI 包即可更新 ngsw.json 中的散列的另一种方法是使用这个小型开源工具来重新创建散列。
wget https://github.com/dev-jan/ngsw-rehash/releases/download/v1.0/ngsw-rehash-linux-x86 -o ngsw-rehash
chmod +x ngsw-rehash
ngsw-rehash <path-to-dist>/ngsw.json
它是一个小型的独立二进制文件,没有任何依赖项。来源可以在这里找到:https://github.com/dev-jan/ngsw-rehash
我创建这个工具是因为我有同样的问题并且不想使用 ngsw-config 工具来保持我的最终 Docker 图像小并且没有很多不需要的二进制文件。
我们有一个使用 angular service worker 的 Angular 应用程序。
正如我们所知,该服务工作者将缓存文件中的内容哈希值与 ngsw.json
文件中的哈希值进行比较。
现在,我们已经设置了持续集成和交付(使用 Azure DevOps,但应该无关紧要)并且在交付阶段,我们正在修改 environment.json
文件中的一些设置(例如颜色方案,API url...都与部署目标有关)。问题是,通过修改 json 文件,散列不再与 ngsw.json
文件中该文件的散列相匹配。
我们绝对不想为专用目标环境重建,因为这违背了 CI/CD 中的目的。 (一旦包进入 QA 流程,您不想为生产环境重建包)。
所以问题是:在我们修改 environment.json
(或任何其他)文件后,有没有办法在 ngsw.json
文件中重新生成哈希值?或者这个问题有其他解决方案吗?
你说的是下面的命令吗:
node_modules/.bin/ngsw-config dist src/ngsw-config.json
您可以将命令放在 package.json:
"scripts": {
"ngsw-config": "node_modules/.bin/ngsw-config dist src/ngsw-config.json"
}
这会为您重做配置和哈希。 运行 在你最后的命令之后,这应该可以在你的 CI 环境中实现。
另请注意,如果您使用其中之一,它可以采用基本 href 参数。
这里有更多解释:Angular doc
无需运送整个 Angular CLI 包即可更新 ngsw.json 中的散列的另一种方法是使用这个小型开源工具来重新创建散列。
wget https://github.com/dev-jan/ngsw-rehash/releases/download/v1.0/ngsw-rehash-linux-x86 -o ngsw-rehash
chmod +x ngsw-rehash
ngsw-rehash <path-to-dist>/ngsw.json
它是一个小型的独立二进制文件,没有任何依赖项。来源可以在这里找到:https://github.com/dev-jan/ngsw-rehash
我创建这个工具是因为我有同样的问题并且不想使用 ngsw-config 工具来保持我的最终 Docker 图像小并且没有很多不需要的二进制文件。