Node.js 为什么我的package-lock.json与package.json不同步?

Node.js 为什么我的package-lock.json与package.json不同步?,node.js,npm,Node.js,Npm,我们的package.json中的所有包都已锁定其版本。任何地方都没有“~”或“^” 我一直在更新项目依赖项(大约过期3年或更长时间)。我和其他一些人已经注意到npm安装后报告的大量漏洞。输出报告约830个漏洞。这比几个月前的1100左右有所下降。我想我的更新正在做一些事情 前几天,我的一个队友报告了我们的JS编译任务(利用网页包)的问题。在帮助排除故障时,我注意到他在完成npm安装后只报告了约50个漏洞。不知怎的,他的包裹锁一定是不一样的。我们都在使用相同的package.json文件,因为它

我们的package.json中的所有包都已锁定其版本。任何地方都没有“~”或“^”

我一直在更新项目依赖项(大约过期3年或更长时间)。我和其他一些人已经注意到npm安装后报告的大量漏洞。输出报告约830个漏洞。这比几个月前的1100左右有所下降。我想我的更新正在做一些事情

前几天,我的一个队友报告了我们的JS编译任务(利用网页包)的问题。在帮助排除故障时,我注意到他在完成npm安装后只报告了约50个漏洞。不知怎的,他的包裹锁一定是不一样的。我们都在使用相同的package.json文件,因为它是版本控制的(这个开发人员负责维护TFS和我们的构建,所以我110%确定他拥有最新版本)

Package-lock.json也由我们的源代码管理跟踪。我习惯于在任何package.json更改之前将其签出,以确保它已更新并签入。然而,在我使用package.json之前的几年中,我发现代码签入中没有包含包锁

我假设npm安装将尊重package.json文件,只要在运行npm安装时保持包锁文件最新即可。主要是为了使团队和CI任务中的所有开发人员都具有相同的node_模块结构。在阅读了文档以及许多SO和GitHub问题之后,现在更加清楚的是,包锁将由npm安装使用,并且应该由npm保持最新

然而,在我团队的情况下,它似乎失去了同步,npm在签出并能够修改它时,真的很难保持更新。为了帮助我的队友排除故障,我决定删除我的包锁文件并运行npm安装。现在我只有23个漏洞,和我的队友有同样的编译问题

由于开发人员在更新或添加包时未签出包锁(并且无法更改,因为它已被TFS锁定),这会导致npm难以更新包锁吗?我挂起的包锁更改中的依赖项版本与当前源代码管理中的版本大不相同。仔细看一看,我希望在本地文件中看到基于package.json的版本。那么,为什么npm不以同样的方式更新包锁,而不管包锁在多个场合都没有更新?npm文档说,包锁“是为npm修改node_modules树或package.json的任何操作自动生成的。”我想它不会每次都生成一个新的包锁,我想我的情况说明了这一点