package-lock.json的确切使用时间是什么时候?

package-lock.json的确切使用时间是什么时候?,json,npm,package.json,package-managers,package-lock.json,Json,Npm,Package.json,Package Managers,Package Lock.json,我知道拥有.lock文件的要点是,它们包含特定版本的软件包,而package.json可以指定范围,因此当您在不同的机器上安装相同的项目时,可以保证软件包的版本相同 我想知道的是: 何时使用package.json以及何时使用package-lock.json?例如,如果捆绑程序找到一个package.json文件,但没有找到package-lock.json文件,它是否使用package.json并创建package-lock.json,但如果找到它,则使用package-lock.json?

我知道拥有.lock文件的要点是,它们包含特定版本的软件包,而package.json可以指定范围,因此当您在不同的机器上安装相同的项目时,可以保证软件包的版本相同

我想知道的是:

何时使用package.json以及何时使用package-lock.json?例如,如果捆绑程序找到一个package.json文件,但没有找到package-lock.json文件,它是否使用package.json并创建package-lock.json,但如果找到它,则使用package-lock.json?如果是这样的话,那么如果您从未重新生成package-lock.json,即使在运行npm安装时,bundler也不会安装package.json中semver ranges允许的最新版本的包,而只是从package-lock.json安装特定版本的包。npm安装将始终尊重包锁

如果要安装package.json中semver范围定义的包的最新版本,则必须移除当前包锁,然后再次运行npm安装


您可以在package.json中手动更新包,也可以通过运行npm安装来更新包package@version. 它将更新此特定包及其依赖项的现有包锁定信息

太好了,谢谢!所以,请澄清一下,如果您运行“npm install”,并且存在一个package-lock.json,并且它包含package.json中引用的所有包,那么它会什么都不做吗?然而,如果有一个package-lock.json,但它可能已经过时,并且已经向package.json添加了更多的包,那么它会只添加package-lock.json中尚未包含的包吗?