yarn 的安装理念及如何破解依赖管理困境

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版权协议,转载请附上原文出处链接和本声明。