Contenido

Información básica sobre el Package.json

El Package es un archivo, con extensión JSON, que contiene información importante sobre el proyecto así como metadatos funcionales (número de version, dependencias, etc.). Esta información es legible por el ser humano.

Su ubicación natural es en la raíz del proyecto.

Objetivo del Package.json

Si has podido echarle un ojo, te habrás podido percatar de que cumple multitud de propósitos. Al margen de aportar información relevante del proyecto y metadatos funcionales de cara a una posible integración dentro de un registro de dependencias (como npm) cumple dos funciones principales más:

  1. Centraliza la forma de interactuar con la aplicación por medio de definición de scripts.
  2. Gestiona de una forma clara y sencilla las dependencias necesarias para que la aplicación pueda funcionar correctamente.

Estructura básica

A continuación, detallo cuales son las propiedades básicas de la estructura de un Package.json. Aunque no todas son obligatorias, sobre todo si no se trata de un paquete/librería que se va a publicar, se recomienda su uso.

  • name: Indica el nombre del paquete con una longitud máxima de 214 caracteres. Debe ser en minúsculas y sin espacios. Acepta guiones y guiones bajos. En caso de publicarse el paquete en NPM, debe ser un nombre único.
  • version: Se recomienda el uso de SemVer (versionado semántico) aunque no es obligatorio su uso. Esta propiedad no es obligatoria si el paquete no se publica en NPM.
  • license: Indica bajo que licencia se distribuye el código.
  • author: Indica información sobre el autor. Puede ser un string con formato “nombre ” o un objeto del tipo {name: “", email: “", url: “"}.
  • contributors: Exactamente igual que para author pero en este caso se trata de un array.
  • description: Texto descriptivo sobre el paquete. Cual es su finalidad, como funciona, etc.
  • keywords: Palabras clave que indexa NPM de cara a mostrar el paquete en el buscador.
  • main: Indica el archivo de arranque del paquete. Por defecto es index.js
  • scripts: Un objecto en el que poder definir los scripts con los que poder interactuar con el programa. Ej: npm start, npm run test, etc.
  • repository: Indica el repositorio donde se encuentra el código del paquete.
  • dependencies: Son las librerías de terceros que la aplicación necesita para funcionar correctamente en producción.
  • devDependencies: En este caso, se trata de dependencias que no son necesarias instalarse para producción y solo se utilizan en tiempo de desarrollo.

Como interactuar con el Package.json

A priori, puede parecer que la forma más sencilla para interactuar con el archivo es editando manualmente con un IDE el archivo. Si bien esta práctica no es errónea, se desaconseja totalmente. El motivo principal es que contamos con herramientas, como el CLI de npm, para poder interactuar con el archivo. Evitando cometer errores semánticos o de cualquier otro tipo que impidan un correcto funcionamiento de la aplicación.

En este artículo cuento más sobre como interactuar con el Package.json a través del CLI.