为什么我在 package-lock.json 中得到不同版本的依赖项?
Why do I get different version of a dependency in package-lock.json?
我正在开发 angular 10
应用程序。为什么我在 package-lock.json
中看到的依赖项版本与我在 package.json
+ cmd 中输入的不同:npm install
示例:
package.json
“依赖项”:{
“下划线”:“^1.12.0”,
....
}
然后我吃午饭npm install
包锁
“下划线”:{
“版本”:“1.13.1”,
“已解决”:“https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz”,
“完整性”:“sha512-...”
},
为什么 package.json 是 1.12.0 而另一个 json 是 1.13.1 ????
您可以查看完整的 semver 文档以获取更多详细信息,但是当您编写 ^1.12.0
时,您实际上是在编写一个版本 range,而不是单一版本。
简短参考:
^1.12.0
=> 最新版本 1.x.x
~1.12.0
=> 最新版本 1.12.x
1.12.0
=> 恰好 1.12.0
根据 semver MAJOR.MINOR.PATCH
约定,具有相同 MAJOR
编号的任何版本都不包含重大更改,因此您通常会看到使用 ^
指定的包版本范围;您获得了最新的更新并且您的代码没有中断!
但是,与 package.json
不同的是,package-lock.json
始终包含安装的软件包的确切版本,以便...好吧...锁定它们。这就是为什么您的 package-lock.json
可以显示比您在 package.json
.
中指定的版本更高的版本
当然,如果出于任何原因这不合适并且您需要坚持使用更具体的版本,您可以使用其他选择器之一。
我正在开发 angular 10
应用程序。为什么我在 package-lock.json
中看到的依赖项版本与我在 package.json
+ cmd 中输入的不同:npm install
示例:
package.json
“依赖项”:{ “下划线”:“^1.12.0”, .... }
然后我吃午饭
npm install
包锁
“下划线”:{ “版本”:“1.13.1”, “已解决”:“https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz”, “完整性”:“sha512-...” },
为什么 package.json 是 1.12.0 而另一个 json 是 1.13.1 ????
您可以查看完整的 semver 文档以获取更多详细信息,但是当您编写 ^1.12.0
时,您实际上是在编写一个版本 range,而不是单一版本。
简短参考:
^1.12.0
=> 最新版本1.x.x
~1.12.0
=> 最新版本1.12.x
1.12.0
=> 恰好1.12.0
根据 semver MAJOR.MINOR.PATCH
约定,具有相同 MAJOR
编号的任何版本都不包含重大更改,因此您通常会看到使用 ^
指定的包版本范围;您获得了最新的更新并且您的代码没有中断!
但是,与 package.json
不同的是,package-lock.json
始终包含安装的软件包的确切版本,以便...好吧...锁定它们。这就是为什么您的 package-lock.json
可以显示比您在 package.json
.
当然,如果出于任何原因这不合适并且您需要坚持使用更具体的版本,您可以使用其他选择器之一。