为什么不在 package.json 文件中指定特定的包版本?那么我们就不需要package-lock.json

5 node.js npm

我是 NPM 的新手,如果我的问题听起来很愚蠢,我很抱歉。以下是我的问题:

Q1-

当我安装一个包并指定指定版本时,例如:

npm install xxx@3.5.1

但为什么在package.json文件中,它变成:

{
   "devDependencies": {
      "xxx": "^3.5.1"
   }
}
Run Code Online (Sandbox Code Playgroud)

我知道额外的插入符(^ 字符)将接受 3.5.2、3.6.0 等版本,但不接受 4.0.0。但我确实明确指定我想要3.5.1版本,那么为什么NPM仍然^在版本前面添加呢?

Q2-

如果 NPM 安装用户指定版本的软件包,那么我们不需要 package-lock.json 文件,不是吗?既然 package.json 文件中的所有版本都是唯一且明确的?

Tan*_*Dat 1

1.

你可以加--save-exact

npm install lodash --save --save-exact- 安装最新版本并将确切版本保存在 package.json 的依赖项中。

2.

^并且是为您提供获取依赖项来源的~方式。但有时还是有风险的。npmlatest

阅读本文以获得更详细的解释。https://bytearcher.com/articles/semver-explained-why-theres-a-caret-in-my-package-json/