首页 > 解决方案 > 插入符号范围和 package-lock.json:如何使用它们获得最新的非破坏版本?

问题描述

我明白了package-lock.json代表什么,但我不明白添加此文件后插入符号范围如何工作?

假设我有一个包 ( my-module),我想拥有所有新的非破坏版本而不手动指定新版本。我安装了最新版本,这是package.json文件中的结果:

"my-module": "^4.1.1"

但是package-lock.json,也通过修复 to 的版本进行了my-module更新4.1.1

下次出新版本时my-module: 4.1.2。运行npm i不会安装,因为里面的版本package-lock.json固定的旧版本。

问题

我怎样才能在不创建新文件的情况下npm i下载最新的非破坏版本?该文件是否只是使用插入符号范围无效?my-modulepackage-lock.json

标签: javascriptnpmpackage-lock.json

解决方案


虽然我不喜欢逐字发布文档,但我认为它是解释为什么您所要求的正是package-lock.json设计为不必要做的最佳来源:

  1. package-lock.json会为 npm 修改node_modules树或package.json的任何操作自动生成。

  2. 它描述了生成的确切树,以便后续安装能够生成相同的树,而不管中间依赖项更新如何。

package.json被输入到npm i操作的结果是一个文件系统node_modules ,与package.json文件中声明的所有依赖项一致。

此操作不会始终产生相同的结果:即使使用完全相同的package.json文件也是如此。这样做是有充分理由npm i的,特别是:

  • 如果自上次安装包以来可能已经发布了直接 semver-range 包的新版本,则将使用更新的版本。

推荐阅读