package-lock.json中的“require:true”是做什么的

我们的团队刚刚更新到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开始, 5.1.0域已经被添加了。 你可以在这里看到相关的pull request https://github.com/npm/npm/pull/17508(changelog在这里可见https://github.com/npm/npm/releases/tag/v5.1.0

引用它所说的话:

这有一些修复:

  1. 它引入了一个新的package-lock.json字段,名为require,用于跟踪给定模块需要的模块。
  2. …..

为了避免这种冲突,我build议你(也是我自己)确保你所有的队友都使用相同的npm版本。

UPDATE

npm升级到版本5.1.0 ,我遇到了缺less依赖关系的问题(在Angular 4应用程序上工作)。 如果有人遇到同样的问题,那么我做了什么来解决它:

 rm -rf node_modules npm prune npm install 

希望能帮助到你。