咱们在项目中安装依赖包最经常使用的两个工具分别是npm和yarn,两个工具安装依赖包的命令分别是npm install
和yarn install
。算法
不管是用哪一种命令进行安装,其均会按照package.json文件中所列的依赖项进行安装。下面看一看package.json、package-lock.json以及yarn.lock三个文件之间的关系。npm
主要用来定义项目中须要依赖的包以及相关执行命令与附加信息。json
在 npm install
时候生成该文件,用以记录当前状态下实际安装的各个npm package的具体来源和版本号。缓存
^
:放在版本号以前,表示向后兼容依赖,就是在大版本号不变的状况下下载最新版的包。项目中引入的包版本号以前常常会加^
号,每次在执行npm install
以后下载的包都会发生变化。为了系统的稳定性考虑,每次执行完npm install
以后会对应生成package-lock.json文件,该文件记录了上一次安装的具体的版本号,这样就提供了一个参考,在出现版本兼容性问题的时候,就能够参考这个文件来修改版本号便可。安全
Yarn 是 Facebook, Google, Exponent 和 Tilde 开发的一款新的 JavaScript 包管理工具。就像咱们能够从官方文档了解那样,它的目的是解决这些团队使用 npm 面临的少数问题,即:
安装的时候没法保证速度/一致性。
安全问题,由于 npm 安装时容许运行代码。工具
Yarn 一样是一个从 npm 注册源获取模块的新的 CLI 客户端,其注册的方式不会有任何变化能够正常获取与发布包。.net
Yarn是一个快速可靠安全的依赖管理工具。 主要的三个特色:code
快速,Yarn会缓存它下载的每一个包,因此无需重复下载。它还能并行化操做以最大化资源利用率。
安全,Yarn会在每一个安装包被执行前校验其完整性。
可靠, Yarn使用格式详尽而又简洁的lockfile文件和肯定性算法来安装依赖,可以保证在一个系统上的运行的安装过程也会以一样的方式运行在其余系统上。blog
关于yarn.lock文件,官网的解释以下:教程
由Yarn管理
您的yarn.lock文件是自动生成的,也彻底Yarn来处理。当你使用Yarn CLI添加/升级/删除 依赖项的时,它将自动更新到您的yarn.lock文件。不要直接编辑这个文件,由于很容易破坏某些东西。 仅限当前包 在安装期间,Yarn将仅使用顶级yarn.lock文件,并将忽略依赖项中存在的任何yarn.lock文件。顶级yarn.lock文件包含Yarn须要锁定整个依赖关系树中全部包的版本的全部内容。
yarn.lock的具体的做用是什么?它能给项目带来什么做用?
Yarn使用肯定性算法,在将文件放置到须要的位置以前构建整个依赖关系树。安装过程当中重要信息存储到yarn.lock文件中,以即可以在安装依赖关系的每一个系统之间共享!此文件包含有关已安装的每一个依赖项的确切版本的信息以及代码的校验和以确保代码彻底相同。
yarn.lock会锁定你安装的每一个依赖项的版本,这能够确保你不会意外得到不良依赖; 而且会避免因为开发人员意外更改或则更新版本,而致使糟糕的状况!
写在最后
使用npm
安装生成了一个package-lock.json文件来注册全部的安装的依赖. 然而它不能保证每次npm install
都会安装里面的指定的包的版本,可是yarn.lock能够。
yarn详细入门教程
yarn.lock文件
项目里的package.json、package-lock.json、yarn.lock文件