在本文中,我们将了解package.json和package.lock.json之间的主要区别以及它们在 node js 中的需求。
在 Node.js 中,package.json是一个版本控制文件,用于在项目中安装多个包。在初始化节点应用程序时,您会看到应用程序中安装了三个文件,即node_modules、package.json和package.lock.json。
您可以通过运行以下命令来初始化节点项目 -
npm 初始化
初始化后,您的package.json将如下所示。
{
"name": "你的项目名称",
“版本”:“1.0.0”,
"description": "你的项目描述",
“主”:“app.js”,
“脚本”:{
"test": "echo "错误:没有指定测试" && exit 1",
},
"作者": "作者姓名",
“许可证”:“ISC”,
“依赖”:{
"依赖1": "^1.4.0",
“依赖2”:“^1.5.2”
}
}
正如我们在上面看到的,package.json 文件包含有关项目的元数据以及应用程序所需的功能依赖项。
下面是一个典型的package.lock.json文件的样子,
{
"name": "你的项目名称",
“版本”:“1.0.0”,
“锁定文件版本”:1,
“要求”:是的,
“依赖”:{
“依赖1”:{
“版本”:“1.4.0”,
“解决”:
"https://registry.npmjs.org/dependency1/-/dependency1-1.4.0.tgz",
“正直”:
"sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA=="
},
“依赖2”:{
“版本”:“1.5.2”,
“解决”:
"https://registry.npmjs.org/dependency2/-/dependency2-1.5.2.tgz",
“正直”:
“sha512-WOn21V8AhyE1QqVfPIVxe3tupJacq1xGkPTB4iagT6o+P2cAgEOOwIxMftr4+ZCTI6d551ij9j61DFr0nsP2uQ==”
}
}
}
但问题是为什么 package.lock.json 在您的项目应用程序中有 package.json 时是必要的。package.lock.json是为锁定已安装版本的依赖关系而创建的。 它将在您的应用程序中安装该软件包的确切最新版本并将其保存在 package.json 中。假设当前软件包的版本是 1.3.2,那么它将保存带有 (^) 符号的版本。这里的 carot(^) 表示,它将支持任何更高版本的主版本 1,例如。1.2.2。
如果没有 package.lock.json,不同环境下安装的版本可能会有一些差异。为了克服这个问题,创建了 package.lock.json 以在每个环境中都有相同的结果。它应该在 package.json 文件的源代码控制中,因为如果任何其他用户将克隆项目并安装依赖项,那么它将安装与 package.lock.json 完全相同的依赖项以避免差异。
以下是两者之间的主要区别,