"requires: true" 在 package-lock.json 中做什么

What does "requires: true" do in package-lock.json

我们的团队刚刚更新到 npm@5。 package-lock.json 在 Windows 和 Mac 之间统一(某些依赖项是可选的,因此它们不会安装在 Windows 上,但它们会安装在 Mac 上)所以无论机器如何,我们都会生成相同的 node_modules 结构。一切顺利,然后每个团队成员都经历了以下步骤:

  1. rm -rf node_modules
  2. git pull
  3. npm install

这实际上对所有团队成员来说都是完美的,除了一个人,他在 npm install 之后修改了 package-lock.json。修改后的一行是删除了 "requires": true.

所以我看到了:

{
  ...
  "version": "0.0.1",
  "lockfileVersion": 1,
  "requires": true,
  "dependencies": {
  ...
}

但是他看到了:

{
  ...
  "version": "0.0.1",
  "lockfileVersion": 1,
  "dependencies": {
  ...
}

有人知道为什么 requires: true 可能会从某些机器上的 package-lock.json 文件中删除,而在其他机器上却不能吗?另外,稍微解释一下 属性 的作用也无妨。 :)

提前致谢!

正如我在评论中所怀疑的那样,自 5.1.0 以来已添加了 requires 字段。您可以在此处查看相关的拉取请求 https://github.com/npm/npm/pull/17508 (changelog visible here https://github.com/npm/npm/releases/tag/v5.1.0)

引用它所说的话:

This has a handful of fixes:

  1. It introduces a new package-lock.json field, called requires, which tracks which modules a given module requires.
  2. .....

为了避免此类冲突,我建议您(以及我自己)确保您所有的队友都使用相同的 npm 版本。

更新

npm 升级到版本 5.1.0 后,我遇到了缺少依赖项的问题(在 Angular 4 应用程序上工作)。如果有人遇到同样的问题,以下是我为解决问题所做的工作:

rm -rf node_modules
npm prune
npm install

希望对您有所帮助。