在Azure Pipelines中搭配npm ci使用缓存是否合理?
Azure Pipelines 中
npm ci 搭配缓存的最佳实践疑问 背景
我们的Azure Pipelines流水线使用npm ci安装依赖,但这个过程耗时很长。我在查找缓存相关信息时发现大量矛盾内容,想明确为npm ci配置缓存是否是合理选择。
缓存的困惑:益处与官方建议
查阅Azure DevOps官方文档时看到:
由于
npm ci会删除node_modules文件夹以确保使用一致、可重复的模块集,因此调用npm ci时应避免缓存node_modules。
npm ci慢的核心原因是需要重新拉取所有node_modules,但官方明确说不能缓存这个文件夹,那启用缓存任务的意义何在?难道不缓存node_modules就失去了缓存提速的价值?
缓存的风险顾虑
npm ci的核心是基于package-lock.json提供干净的安装环境,如果缓存node_modules,从缓存而非官方源获取依赖,会不会出现缓存失效不及时,导致拿到过期、错误包的问题?难道缓存和npm ci根本就不应该一起用?
矛盾的信息来源
按照上面的结论,我觉得不该尝试用缓存加速npm ci,但搜索相关内容时,却看到大量教程和Stack Overflow回答都在教如何配置缓存,这类资源数量很多,为什么会出现这么大的矛盾?
核心问题总结
- 是否应该在Azure Pipelines中为
npm ci配置缓存任务?请说明理由! - 如果答案是是:不缓存
node_modules的情况下,缓存能给npm ci带来什么提速效果? - 如果答案是否:还有哪些方法可以提升
npm ci的安装速度?
内容的提问来源于stack exchange,提问作者S. ten Brinke
相关产品推荐
相关产品推荐

