npm,yarn,cnpm,pnpm的区别

npm

npm是node.js自带的包管理工具,围绕语义版本控制
npm中有三种版本号:

  1. 主版本号:5.1.0当主API改变,并与之前的版本号不兼容的时候
  2. 次版本号:当增加了功能,但是向后兼容的时候
  3. 补丁版本号:当做了向后兼容但是版本有缺陷的时候

这就导致不同的人下载的版本号不同,可能会出现问题

npm2的时候,经常出现某个依赖包还需要另一个依赖包来支持,这时候就会出现依赖包嵌套,嵌套太多层就导致结构非常混乱,在npm3的时候,采用扁平依赖树来解决,所以我们的项目下只有node_modules和其他的包,但是用这个包就必须遍历所有依赖包再生成依赖树,所以npm下载非常耗时

cnpm

因为国内使用npm下载太慢了,所以淘宝提供了镜像cnpm访问

cnpm坑点:npm有packge-lock.json是用来锁定安装的包的版本号,但是cnpm不受packge-lock.json的限制,cnpm只根据packge.json来下载安装包

yarn

yarn是由Google和Facebook等公司开发出来的新的包管理工具,由于npm有以下缺点:

  1. 下载速度慢
  2. 安装速度慢
  3. 下载版本不一致

所以yarn针对这些缺点:

  1. 通过并行下载,提高下载的速度
  2. 通过yarn.lock来保存包之间的依赖关系,保证包的版本一致
  3. 通过yarn.lock来保存依赖关系,下一次安装更快
  4. 支持离线下载

npm下载都会有本地缓存,但是npm需要联网才能从缓存中获取,而yarn可以不联网就离线下载
npm5也支持了包的版本一致,使用了packge-lock.json

pnpm

pnpm的下载速度甚至超过了yarn和npm,它使用硬链接和符号链接避免复制所有本地源文件,同时也继承了yarn的优点,支持离线下载和包的版本一致问题

猜你喜欢

转载自blog.csdn.net/qq_48886692/article/details/120778003