纯属个人理解,如有错误或者批露欢迎指出!
npm
目录结构:从纵向的树结构到扁平化结构改进
不确定性:版本号区间问题导致不同电脑下载的依赖版本可能不同,不确定性有可能导致,我的电脑没问题这样的问题
出现。其后提供了对应的参数解决该问题,并使用了lock文件。
间接依赖问题。
依赖提升问题。
yarn
目录结构:扁平化
确定性:加了版本校验,确保版本不会出问题,同npm使用了lock文件。
加了离线安装的功能。npm提出后一直都没实现该功能。
同npm一样有依赖提升的问题。
pnpm
目录结构:树形结构,同package里面的依赖。node_module使用的是软链接。使得安装和卸载都提升了几个档次。解决了npm每次安装都要从缓存目录copy文件到node_module导致安装时间长的问题。
无间接依赖。
安装包只会安装一次,之后使用链接。
更新包类似git提交的操作,只能更新变化的部分。
继承了yarn的所有优点。离线功能和确定性校验。
配合monorepo使用管理多项目。