
Yarn 安装机制
检测(checking)→ 解析包(Resolving Packages) → 获取包(Fetching Packages)→ 链接包(Linking Packages)→ 构建包(Building Packages)

- 检测包(checking):检测项目中是否存在 npm 相关文件,比如 package-lock.json 等。如果有,会提示用户注意:这些文件的存在可能会导致冲突。在这一步骤中,也会检查系统 OS、CPU 等信息。
- 解析包(Resolving Packages):这一步会解析依赖树中每一个包的版本信息。

- 如何判断缓存中是否存在当前的依赖包?
- 其实 Yarn 会根据 cacheFolder+slug+node_modules+pkg.name 生成一个 path,判断系统中是否存在该 path,如果存在证明已经有缓存,不用重新下载。这个 path 也就是依赖包缓存的具体路径。
- 如何判断缓存中是否存在当前的依赖包?
- 获取包(Fetching Packages)这一步我们首先需要检查缓存中是否存在当前的依赖包,同时将缓存中不存在的依赖包下载到缓存目录。

- 链接包(Linking Packages):将项目中的依赖复制到项目 node_modules 下,同时遵循扁平化原则。在复制依赖前,Yarn 会先解析 peerDependencies,如果找不到符合 peerDependencies 的包,则进行 warning 提示,并最终拷贝依赖到项目中。

- 构建包(Building Packages):如果依赖包中存在二进制包需要进行编译,会在这一步进行。
版权声明:本文为weixin_37883657原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。