我看到这是两个独立的问题。让我都回答。
您是否应该将文件提交到回购中?
是。如ckuijjer的回答中所述,建议在《迁移指南》中将此文件包含在回购中。继续阅读以了解为什么需要这样做。
什么yarn.lock
啊
它是一个文件,用于存储项目的确切依赖版本以及每个软件包的校验和。这是yarn为您的依赖项提供一致性的方法。
要了解为什么需要此文件,您首先需要了解原始NPM背后的问题是什么package.json
。在安装软件包时,NPM将存储允许的依赖项修订版本范围,而不是特定的修订版本(Semver)。NPM将尝试在指定范围内获取依赖关系的最新更新依赖关系的最新版本(即不间断的补丁更新)。这种方法有两个问题。
依赖性作者可能会发布补丁程序版本更新,而实际上却引入了会影响您项目的重大更改。
npm install
在不同时间运行的两个开发人员可能会获得不同的依赖关系集。这可能会导致在两个完全相同的环境中无法再现错误。例如,这可能会导致CI服务器的构建稳定性问题。
另一方面,纱线采取了最大可预测性的路线。它创建yarn.lock
文件来保存确切的依赖版本。将文件放置到位后,yarn将使用中存储的版本,yarn.lock
而不是从中解析版本package.json
。此策略保证上述所有问题均不会发生。
yarn.lock
类似于npm-shrinkwrap.json
可以通过npm shrinkwrap
命令创建的内容。检查此答案,以解释这两个文件之间的差异。