ci环境上优化及工程化问题海量资源.pdfVIP

ci环境上优化及工程化问题海量资源.pdf

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

本文由简悦SimpRead转码,原文地址

前两讲,我们围绕着npm和Yarn的原理展开了讲解,实际上npm和Yarn涉及项目的方方面

面,加之本身设计复杂度较高,这一讲我将继续讲解CI环境上的npm优化以及工程化相关问题。

希望通过这一讲的学习你能够学习到CI环境上使用包管理工具的方方面面,并能够解决非本地环境下

(一般是在容器上)使用包管理工具解决相关问题。

CI环境上的npm优化

CI环境下的npm配置和开发者本地npm操作有些许不同,接下来我们一起看看CI环境上的npm相

关优化。

合理使用npmci和npminstall

顾名思义,npmci就是专门为CI环境准备的安装命令,相比npminstall它的不同之处在于:

npmci要求项目中必须存在package-lock.json或npm-shrinkwrap.json;

npmci完全根据package-lock.json安装依赖,这可以保证整个开发团队都使用版本完全一致的

依赖;

正因为npmci完全根据package-lock.json安装依赖,在安装过程中,它不需要计算求解依赖满

足问题、构造依赖树,因此安装过程会更加迅速;

npmci在执行安装时,会先删除项目中现有的node_modules,然后全新安装;

npmci只能一次安装整个项目所有依赖包,无法安装单个依赖包;

如果package-lock.json和package.json,那么npmci会直接报错,并非更新lockfiles;

npmci不会改变package.json和package-lock.json。

基于以上特性,我们在CI环境使用npmci代替npminstall,一般会获得更加稳定、一致和迅速的安

装体验。

npmci的内容你也可以在官网查看。

使用package-lock.json优化依赖安装时间

上面提到过,对于应用项目,建议上传package-lock.json到仓库中,以保证依赖安装的一致性。事实

上,如果项目中使用了package-lock.json一般还可以显著加速依赖安装时间。这是因为package-

lock.json中已经缓存了每个包的具体版本和,你不需要再去仓库进行查询,即可直接进

入文件完整性校验环节,减少了大量网络请求。

除了上面所述内容,CI环境上,缓存node_modules文件也是企业级使用包管理工具常用的优化做

法。

工程化相关问题解析

下面这部分,我将通过剖析几个问题,来加深你对这几讲学习概念的理解,以及对工程化中可能遇到的

问题进行预演。

为什么要lockfiles,要不要提交lockfiles到仓库?

从npmv5版本开始,增加了package-lock.json文件。我们知道package-lock.json文件的作用是锁

定依赖安装结构,目的是保证在任意机器上执行npminstall都会得到完全相同的node_modules安

装结果。

你需要明确,为什么单一的package.json不能确定唯一的依赖树:

不同版本的npm的安装依赖策略和算法不同;

npminstall将根据package.json中的semver-rangeversion更新依赖,某些依赖项自上次安装

以来,可能已发布了新版本。

因此,保证能够完整准确地还原项目依赖,就是lockfiles出现的。

首先我们了解一下package-lock.json的作用机制。上一讲中我们已经解析了yarn.lock文件结构,这

里我们看下package-lock.json的内容举例:

@babel/core:{

version:7.2.0,

resolved:,

integrity:sha1-pN04FJAZmOkzQPAIbphn/voWOto=,

dev:true,

requires:{

@babel/cod

文档评论(0)

158****9376 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档