首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在dist/style上的PurifyCSS之后,角度服务工作者散列不匹配。*..css

在dist/style上的PurifyCSS之后,角度服务工作者散列不匹配。*..css
EN

Stack Overflow用户
提问于 2019-10-14 16:43:51
回答 2查看 370关注 0票数 1

当我使用服务工作者构建Angular应用程序时,它会创建一个哈希表,其中包含每个文件的哈希值,以检测何时有新版本的应用程序可用。这个哈希表是ngsw.json格式的。

这是一个哈希值的例子。

如果我想用PurifyCSS清理未使用的css,那么dist/style.*.css将更改文件内容,从而更改其散列,但ngsw.json具有旧的散列。

在这种情况下,angular服务工作者将失败,因为将存在散列不匹配。

我怎样才能避免这种情况?在运行PurifyCSS之后,我应该在ngsw.json中手动更新哈希吗?有没有一些机制可以自动更新这个值,或者在angular-cli为每个文件生成散列之前,是否可以执行PurifyCSS?

这个问题通常适用于对服务工作者缓存的dist文件进行的任何类型的修改,因为散列将更改,因此将存在散列不匹配。这意味着服务工作者不会工作。

提前谢谢你。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-24 22:02:49

我发现了一些在官方Angular文档中出现的非常有用的东西。对dist文件夹中的文件进行所需的所有修改后,可以使用简单的命令重新创建ngsw.json文件。

代码语言:javascript
复制
./node_modules/.bin/ngsw-config ./dist/<project-name> ./ngsw-config.json [/base/href]

这将重新生成ngsw.json,并且service worker再次正常工作。

https://angular.io/guide/service-worker-config

票数 1
EN

Stack Overflow用户

发布于 2020-08-24 10:33:03

我刚刚在我的Angular Service Worker上遇到了这个问题。我是通过艰难的方式才了解到这一点的(有趣的事实是: NGSW不能在离线模式下工作,也不会缓存结果)。

无论如何,这是我解决这个问题的方法。

由于Angular在.js dist输出中内联组件的CSS,因此Angular输出的独立.css文件包含任何全局样式(即styles.css),例如Bootstrap CSS。我所做的是运行purifyCSS并将清理后的输出复制到src/styles.css中。通过这种方式,您不必在构建后在ngsw.json中进行任何SHA1散列修改。缺点是,无论何时你添加一个依赖于不同Bootstrap选择器的模块,你都需要重做这个过程。

不幸的是,这有点笨拙,但我还没有找到一种方法来将净化过程集成到“预构建”过程中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58373027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档