Corepack默认与 Node.js 14.19.0 和 16.9.0 一起分发,所以保证 Node.js 版本大于等于 16.9.0。
npm
- 串行安装,要等队列中当前package安装成功后才会继续下一个package的安装
- install慢,无缓存,删除node_modules 后重新install无法利用缓存
- node_modules 依赖冗余过多
cnpm
cnpm这个是国内淘宝镜像,是为解决 npm 速度太慢的问题而产生的,,但是它最大的问题是会忽视package-lock.json文件,也就是说你无法锁定小版本,可能会导致依赖版本不一致引起的bug,防止这个隐患则需要在 package.json 中就锁定版本,如下:
- 符号^:表示主版本固定的情况下,可更新最新版。例如:vuex: "^3.1.3",3.1.3及其以上的3.x.x都是满足的。
- 符号~:表示次版本固定的情况下,可更新最新版。如:vuex: "~3.1.3",3.1.3及其以上的3.1.x都是满足的。
- 无符号:无符号表示固定版本号,例如:vuex: "3.1.3",此时一定是安装3.1.3版本。
yarn
缓存了每个下载过的包,所以再次使用时无需重复下载,同时利用并行下载以最大化资源利用率,因此安装速度更快。
超级安全 在执行代码之前,Yarn 会通过算法校验每个安装包的完整性。
超级可靠 使用详细、简洁的锁文件格式和明确的安装算法,Yarn 能够保证在不同系统上无差异的工作。
离线模式 如果你以前安装过某个包,再次安装时可以在没有任何互联网连接的情况下进行。
确定性 不管安装顺序如何,相同的依赖关系将在每台机器上以相同的方式安装。
网络性能 Yarn 有效地对请求进行排队处理,避免发起的请求如瀑布般倾泻,以便最大限度地利用网络资源。
相同的软件包 从 npm 安装软件包并保持相同的包管理流程。
网络弹性 重试机制确保单个请求失败并不会导致整个安装失败。
扁平模式 将依赖包的不同版本归结为单个版本,以避免创建多个副本。
pnpm
pnpm的项目初衷是节约磁盘空间并提升安装速度,所有文件都会存储在硬盘上的某一位置。 当软件包被被安装时,包里的文件会硬链接到这一位置,而不会占用额外的磁盘空间。这允许你跨项目地共享同一版本的依赖,因此,您在磁盘上节省了大量空间,这与项目和依赖项的数量成正比,并且安装速度要快得多。
Corepack
不再需要专门全局安装 yarn pnpm 等工具。
可以强制团队项目中使用他特定的包管理器版本,而无需他们在每次需要进行更新时手动同步它,如果不符合配置将在控制台进行错误提示。
启停用 corepack
corepack enable
corepack disable
https://juejin.cn/post/7060448346107805732
https://www.jianshu.com/p/c239ed5dedd6