package-lock.json中的"require:true"是什么

atd*_*ago 9 node.js npm npm-install 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

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

所以我看到:

{
  ...
  "version": "0.0.1",
  "lockfileVersion": 1,
  "requires": true,
  "dependencies": {
  ...
}
Run Code Online (Sandbox Code Playgroud)

但他看到:

{
  ...
  "version": "0.0.1",
  "lockfileVersion": 1,
  "dependencies": {
  ...
}
Run Code Online (Sandbox Code Playgroud)

有人知道为什么requires: true可能会从package-lock.json某些机器上的文件中删除,而不是其他机器上的文件?此外,对这个属性做什么的一点解释也不会有害.:)

提前致谢!

lka*_*ono 6

正如我在评论中所怀疑的那样,该requires字段已被添加5.1.0.你可以在这里看到相关的拉取请求https://github.com/npm/npm/pull/17508(在这里可以看到更改日志https://github.com/npm/npm/releases/tag/v5.1.0)

引用它的内容:

这有一些修复:

  1. 它引入了一个名为requires的新的package-lock.json字段,它跟踪给定模块所需的模块.
  2. .....

为了避免这种冲突,我建议你(以及我自己)确保你的所有队友使用相同的npm版本.

UPDATE

升级npm到版本后5.1.0,我遇到了缺少依赖项的问题(处理Angular 4应用程序).如果有人遇到同样的问题,这就是我要解决的问题:

rm -rf node_modules
npm prune
npm install
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你.