Node.js package.json和package-lock.json文件之间的区别

Node.js package.json和package-lock.json文件之间的区别

在本文中,我们将学习package.json和package.lock.json之间的主要区别,以及它们在Node.js中的需求。

在Node.js中,package.json是一个版本文件,用于在您的项目中安装多个包。当您初始化您的Node应用程序时,您将在您的应用程序中安装三个文件,即node_modules,package.json和package.lock.json。

您可以通过运行下面的命令来初始化Node项目-

npm init
JavaScript

初始化之后,您的 package.json 将大致如下所示。

{
    "name": "Your project name",
    "version": "1.0.0",
    "description": "Your project description",
    "main": "app.js",
    "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1",
    },
    "author": "Author name",
    "license": "ISC",
    "dependencies": {
        "dependency1": "^1.4.0",
        "dependency2": "^1.5.2"
    }
}
JavaScript

如上所示,package.json文件包含关于项目的元数据,以及应用程序所需的功能性依赖项。

下面是一个典型的package.lock.json文件的样子,

{
    "name": "Your project name",
    "version": "1.0.0",
    "lockfileVersion": 1,
    "requires": true,
    "dependencies": {
        "dependency1": {
            "version": "1.4.0",
            "resolved": 
"https://registry.npmjs.org/dependency1/-/dependency1-1.4.0.tgz",
            "integrity": 
"sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA=="
        },
        "dependency2": {
            "version": "1.5.2",
            "resolved": 
"https://registry.npmjs.org/dependency2/-/dependency2-1.5.2.tgz",
            "integrity": 
"sha512-WOn21V8AhyE1QqVfPIVxe3tupJacq1xGkPTB4iagT6o+P2cAgEOOwIxMftr4+ZCTI6d551ij9j61DFr0nsP2uQ=="
        }
    }
}
JavaScript

但是问题是,当您在项目应用程序中有package.json时,为什么需要package.lock.json。 package.lock.json 是为了 锁定与已安装版本的依赖关系。 它将在您的应用程序中安装该软件包的确切最新版本,并将其保存在package.json中。假设当前的软件包版本为1.3.2,则它将使用(^)符号保存版本。在这里,^表示,它将支持任何具有主要版本1的更高版本,例如1.2.2。

如果没有package.lock.json,不同环境中安装的版本可能会有些差异。为了解决这个问题,创建了package.lock.json以在每个环境中产生相同的结果。它应该与package.json文件一起放在源代码控制中,因为如果其他用户克隆项目并安装依赖项,它将安装与package.lock.json中完全相同的依赖项,以避免差异。

以下是两者之间的主要差异,

package.json package.lock.json
包含关于项目的基本信息。 描述生成的确切树,以允许后续安装具有相同的树。
对每个项目都是必需的。 npm 修改 node_modules 树或 package.json 时自动生成。
记录项目的重要元数据。 允许将来的开发者在项目中安装相同的依赖关系。
包含名称、描述、作者、脚本和依赖等信息。 包含项目的名称、依赖关系和锁定版本。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册