Npm 我需要package-lock.json和package.json吗?

Npm 我需要package-lock.json和package.json吗?,npm,npm-install,package.json,package-lock.json,Npm,Npm Install,Package.json,Package Lock.json,在将我的NPM更新到最新版本(从3.X到5.2.0)并在现有项目上运行NPM install之后,我得到了一个自动创建的package lock.json文件 我可以看出,package lock.json给了我一个确切的依赖关系树,而不是package.json 仅从这些信息来看,package.json似乎是多余的,不再需要了 对于NPM来说,这两种方法都是必要的吗? 仅使用package lock.json文件是否安全或可能 package-lock.json(,)上的文档没有提到这一点

在将我的NPM更新到最新版本(从3.X到5.2.0)并在现有项目上运行
NPM install
之后,我得到了一个自动创建的
package lock.json
文件

我可以看出,
package lock.json
给了我一个确切的依赖关系树,而不是
package.json

仅从这些信息来看,
package.json
似乎是多余的,不再需要了

对于NPM来说,这两种方法都是必要的吗?
仅使用
package lock.json
文件是否安全或可能

package-lock.json(,)上的文档没有提到这一点

编辑


经过进一步思考,我得出结论,如果有人想使用旧版本的NPM(5.x之前)来使用您的项目,它仍然会安装所有的依赖项,但是使用不太准确的版本(补丁版本)

如果您的问题是锁文件是否应该提交给您的源代码管理,那么应该安装。在某些情况下,它将被忽略


我发现它会导致拉取请求和提交历史的膨胀,所以如果您看到它发生了变化,请对它进行单独的提交

您是否同时需要
package lock.json
package.json

您是否需要
包.json

您能否拥有一个只有
包锁.json
的项目


package.json
用于定义项目属性、描述、作者和许可证信息、脚本、,等。
package lock.json
仅用于将依赖项锁定到特定的版本号。

package lock.json
:记录每个已安装软件包的确切版本,允许您重新安装它们。将来的安装将能够构建相同的依赖关系树


package.json
:记录应用程序所需的最低版本。如果您更新了某个特定包的版本,则此处不会反映更改。

可以找到关于保留package-lock.json背后原因的更准确、更详细的解释。

不,我不是在问提交到源代码管理的问题。如果NPM需要同时使用这两种方法
package lock.json
似乎是
package.json
的一个更详细的版本,所以只使用锁文件是安全的还是可能的。我明白了,我在我的项目中留下了package.json,主要是为了给npm脚本留一个位置。现在有一个关于是否将
package lock.json
置于版本控制之下的问题。如果上述情况属实,和
package.json
记录应用程序所需的最低版本,package-lock.json记录每个安装包的确切版本,然后我遇到了一个奇怪的情况,package.json中的模块设置为0.112.1,package-lock.json中的模块设置为0.110.0。。。