如果我没有在我的 package.json 中使用插入符 (^) 或波浪符 (~),我还需要一个包 -lock.json 吗?

Do I still need a package-lock.json if I am not using caret(^) or tilde(~) in my package.json?

如果我总是在 package.json 中使用特定版本的包,那么包-lock.json 需要什么?或其他提出这个问题的方式是,如果有人想使用 package-lock.json,为什么他们不能在 package.json 中使用确定版本的包(1.2.3 而不是 ^1.2.3) .

使用package-lock.json优化安装过程,因为已经计算出完整的依赖关系树:

optimize the installation process by allowing npm to skip repeated metadata resolutions for previously-installed packages. doc

正如@imjared 提到的那样,包的特定版本仍然可以依赖于插入符版本。