Corepack is a zero-runtime-dependency Node.js script that acts as a bridge between Node.js projects and the package managers they are intended to be used with during development. In practical terms, Corepack will let you use Yarn and pnpm without having to install them - just like what currently happens with npm, which is shipped by Node.js by default.
摘自:https://github.com/nodejs/corepack
The full npm package wouldn't be included out of the box anymore (this might be an incremental move, with first a major version shipping pmm + npm, and the next one discarding npm)
npm 将慢慢从 Node.js 内置包中移除,预计在下一个大版本启动
长期以来,node 中自带的包管理工具只有 npm, 作为官方指定工具,使用者众多,从体验上来讲,却是一般,速度真的慢。
npm 的不足
npm 下载慢的问题一个重要原因是因为包镜像在国外,所以可以通过修改使用国内镜像源来解决这个问题
如果需要频繁切换的话可以使用开源工具 nrm,更方便一些
搭建企业内网私有源的一种方案:cnpmjs架设
试试其它的吧
cnpm
cnpm 这个是国内淘宝镜像,是为解决 npm 速度太慢的问题而产生的,控制台log 也清晰许多,但是它最大的问题是会忽视 package-lock.json 文件,也就是说 你无法锁定小版本,可能会导致依赖版本不一致引起的 bug,防止这个隐患则需要在 package.json 中就锁定版本,如下:
yarn(npm的升级替代品)
yarn 是 Facebook, Google, Exponent 和Tilde 开发的一款新的JavaScript 包管理工具 ,是为了解决npm的缺点而产生的,Yarn 缓存了每个下载过的包,所以再次使用时无需重复下载,同时利用并行下载以最大化资源利用率,因此安装速度更快。
特点:
重试机制
确保单个请求失败并不会导致整个安装失败。常用指令:
使用文档:https://yarn.bootcss.com
pnpm (新一代包管理工具)
pnpm 的项目初衷是节约磁盘空间并提升安装速度
所有文件都会存储在硬盘上的某一位置。 当软件包被被安装时,包里的文件会硬链接到这一位置,而不会占用额外的磁盘空间。这允许你跨项目地共享同一版本的依赖,因此,您在磁盘上节省了大量空间,这与项目和依赖项的数量成正比,并且安装速度要快得多。
pnpm 支持npm yarn corepack等多种安装使用方式,比如
使用文档:https://pnpm.io/zh/pnpm-cli
Corepack「管理包管理器的管理器」
Corepack是一个实验性工具,在 Node.js v16.13 版本中引入,它可以指定项目使用的包管理器以及版本, 简单来说,Corepack 会成为 Node.js 官方的内置 CLI,用来管理『包管理工具(
npm、yarn、pnpm、cnpm)』,用户无需手动安装,即『包管理器的管理器』。主要作用:
corepack 用法
由于corepack 是一个实验性工具,所以默认是没有启动的,需要显式启用,需要运行指令 corepack enable 进行启动;在项目package.json 文件中新增属性 "packageManager",比如
代表当前项目只允许使用yarn 包管理器并指定1.22.15版本
因为在试验阶段,目前还有些问题待解决:
总结
虽然npm 是现在node的默认包管理器,但是由于它多年来的不思进取,及种种缺陷,corepack 的出现可以说是大快人心,其最大的意义是让 npm 不再成为唯一的官方指定工具,这将使各种包管理器在一个更公平的地位上进行竞争,相信对前端包管理工具对使用者来说也是一件很好的事情。
参考链接: