yarn
# Yarn的安装理念及如何破解依赖管理困境
yarn特点:
- 确定性
- 采用模块扁平安装模式
- 网络性能更好
- 采用缓存机制,实现了离线模式
# 安装机制
- 检测包。
- 检测项目中是否存在一些npm相关文件。
- 检查系统OS、CPU等信息。
- 解析包。
- 获取当前项目中package.json定义。
- 采用遍历首层依赖的方式获取依赖包的版本信息。
- 如果在yarn.lock中没有找到包,则想Registry发起请求获取,获取后标记为已解析。
- 获取包。
- 检查缓存中是否存在当前依赖包。如何判断?Yarn根据cacheFolder+slug+node_modules+pkg.name生成一个path,然后判断系统中是否存在该path,有则有缓存。
- 将缓存中不存在的依赖包下载到缓存目录。
链接包
- 通过扁平化原则,将项目中的依赖复制到node_modules下。
构建包
- 编译依赖包中的二进制包
# 破解依赖管理困境
npm安装依赖时,将依赖放到项目的node_modules中。如果某模块A还依赖模块B,则模块B会下载到A的node_modules中,造成嵌套依赖。层级过多的话,占用空间大,安装会变慢,也不利于调试。
此外,npm包的安装顺序对依赖树的影响很大,可能影响到node_modules中文件的数量。
而yarn才用扁平化处理,避免了多余的文件和嵌套,结构更简洁清爽。
上次更新: 2022/06/08, 11:25:56