Diferencia entre los archivos package.json y package-lock.json

En este artículo, aprenderemos las principales diferencias entre package.json y package.lock.json y sus necesidades en el Node js.

En Node.js, package.json es un archivo de control de versiones que se usa para instalar varios paquetes en su proyecto. A medida que inicializa su aplicación de Node, verá tres archivos instalados en su aplicación que son node_modules , package.json y package.lock.json .

Puede inicializar el proyecto de Node ejecutando el siguiente comando:

npm init

Después de inicializar, su paquete.json se verá así.

{
    "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"
    }
}

Como podemos ver arriba, un archivo package.json contiene metadatos sobre el proyecto y también las dependencias funcionales que requiere la aplicación.

A continuación se muestra el aspecto de un archivo típico de 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=="
        }
    }
}

Pero la pregunta es por qué es necesario package.lock.json cuando tiene package.json en su aplicación de proyecto. package.lock.json se crea para bloquear la dependencia con la versión instalada. Instalará la última versión exacta de ese paquete en su aplicación y la guardará en package.json. Digamos que si la versión actual del paquete es 1.3.2, guardará la versión con el signo (^). Aquí carot(^) significa que admitirá cualquier versión superior con la versión principal 1, por ejemplo. 1.2.2. 

Sin package.lock.json, puede haber algunas diferencias en las versiones instaladas en diferentes entornos. Para superar este problema, se crea package.lock.json para obtener los mismos resultados en todos los entornos. Debe estar en el control de código fuente con el archivo package.json porque si cualquier otro usuario clona el proyecto e instala las dependencias, instalará exactamente las mismas dependencias que en el paquete.lock.json para evitar diferencias.

A continuación se muestran las principales diferencias entre los dos,

paquete.json

paquete.lock.json

Contiene información básica sobre el proyecto. Describe el árbol exacto que se generó para permitir que las instalaciones posteriores tengan el mismo árbol.
Es obligatorio para todos los proyectos. Se genera automáticamente para aquellas operaciones en las que npm modifica el árbol node_modules o el paquete.json.
Registra metadatos importantes sobre el proyecto. Permite que futuros desarrolladores instalen las mismas dependencias en el proyecto.
Contiene información como nombre, descripción, autor, guión y dependencias. Contiene el nombre, las dependencias y la versión bloqueada del proyecto. 

Publicación traducida automáticamente

Artículo escrito por nirmitsawhney01 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *