重要:本文档介绍纱线 1(经典版)。
有关纱线 2+ 文档和迁移指南,请参阅 yarnpkg.com。

纱线导入

从位于相同位置的 npm package-lock.json 文件或现有的已安装 npm 的 node_modules 文件夹中生成 yarn.lock

纱线导入

此命令有助于当前依赖于 package-lock.json 的项目的迁移,尽可能地最小化锁文件和现有依赖项树之间的差异。

动机

许多项目目前使用 package-lock.json 或将它们的 node_modules 检查到源代码管理中,因为它们具有脆弱的依赖项树。这些项目无法轻松迁移到纱线,因为 纱线安装 可能会产生截然不同的逻辑依赖项树。并非所有树都能由 Yarn 的 yarn.lock 表示,并且一些有效树将在安装时自动去重。这些和其他细微差别给手动迁移带来了重大障碍。

纱线导入 旨在通过以下两种方式生成一个 yarn.lock 文件来缓解这一挑战

  1. 使用 npm install 创建的现有 package-lock.json 文件中的依赖项树
  2. 如果不存在这样的文件,则使用 node_modules 中按照 normal require.resolve() 分辨率规则找到的版本。

在 Yarn 分辨率机制无法完全满足现有依赖项树的情况下,会发出警报,以便您可以手动查看更改。现有的 node_modules 树将在事先检查其有效性(如果没有从 package-lock.json 导入),并且结果锁文件应该可以 纱线安装,而不会出现任何意外(兼容性失败、无法解决的依赖项、自动去重等)

$ yarn import
yarn import vx.x.x
success Folder in sync.
warning Using version "2.2.4" of "lru-cache" instead of "2.7.3" for "ngstorage > grunt > minimatch"
warning Using version "2.0.6" of "readable-stream" instead of "2.2.9" for "ngstorage > karma > chokidar > readdirp"
[...]
success Saved lockfile.
✨  Done in 11.96s.