纱线导入
从位于相同位置的 npm package-lock.json
文件或现有的已安装 npm 的 node_modules
文件夹中生成 yarn.lock
。
纱线导入
此命令有助于当前依赖于 package-lock.json
的项目的迁移,尽可能地最小化锁文件和现有依赖项树之间的差异。
动机
许多项目目前使用 package-lock.json
或将它们的 node_modules
检查到源代码管理中,因为它们具有脆弱的依赖项树。这些项目无法轻松迁移到纱线,因为 纱线安装
可能会产生截然不同的逻辑依赖项树。并非所有树都能由 Yarn 的 yarn.lock
表示,并且一些有效树将在安装时自动去重。这些和其他细微差别给手动迁移带来了重大障碍。
纱线导入
旨在通过以下两种方式生成一个 yarn.lock
文件来缓解这一挑战
- 使用
npm install
创建的现有package-lock.json
文件中的依赖项树 - 如果不存在这样的文件,则使用
node_modules
中按照 normalrequire.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.