Skip to content

Archivo package.json

Este archivo es el manifiesto central del proyecto Node.js, conteniendo metadatos sobre la aplicación y gestionando sus dependencias y scripts.

  • Descripción: Es un archivo JSON que almacena información crucial sobre el proyecto, como su nombre, versión, tipo de módulo, scripts para tareas comunes (desarrollo, construcción, inicio, pruebas), lista de palabras clave, autor, licencia y descripciones. Además, define todas las dependencias (dependencies) que la aplicación necesita para ejecutarse en producción y las dependencias de desarrollo (devDependencies) para tareas como compilación, pruebas y linteo.
  • Propósito:Definir el proyecto, gestionar sus dependencias y estandarizar los comandos para el ciclo de vida del desarrollo. Actúa como el punto de referencia para npm (o yarn) para entender cómo instalar, construir, probar y ejecutar la aplicación.
  • Contenido clave::
    • name, version, description: Metadatos básicos del proyecto.
    • exports: "./dist/index.js": Define el punto de entrada principal del paquete cuando es importado por otros módulos. Sugiere que tu aplicación se transpila a JavaScript en la carpeta dist.
    • type: "module": Indica que el proyecto usa módulos ES (ESM), lo que permite usar import/export sin necesidad de transpiladores adicionales en tiempo de ejecución para ESM.
    • scripts:
      • "dev": "tsx watch src/index.ts": Script para desarrollo. tsx es una herramienta para ejecutar archivos TypeScript directamente (con hot reloading gracias a watch), lo que agiliza el desarrollo sin necesidad de una compilación manual constante.
      • "build": "pkgroll": Script para compilar el proyecto. pkgroll es probablemente un bundler o herramienta de compilación que transforma el código fuente TypeScript en JavaScript optimizado para producción.
      • "start": "node dist/index.js": Script para iniciar la aplicación en producción, ejecutando el código JavaScript compilado en dist/index.js.
      • "test": "vitest": Script para ejecutar las pruebas del proyecto usando Vitest.
    • devDependencies: Lista de paquetes necesarios solo durante el desarrollo (ej., TypeScript, Vitest, Supertest, tipos para librerías JS, pkgroll, tsx).
    • dependencies: Lista de paquetes necesarios para que la aplicación funcione en producción (ej., Express, Sequelize, dotenv, jsonwebtoken, winston, Google APIs, Multer, etc.).
  • Rol en la aplicación: Es el centro de control del proyecto. Permite que otros desarrolladores configuren y ejecuten el proyecto fácilmente, asegura la consistencia de las versiones de las dependencias y automatiza las tareas de desarrollo y despliegue.
ts
{
  "name": "aplicacion",
  "version": "1.0.0",
  "exports": "./dist/index.js",
  "type": "module",
  "scripts": {
    "dev": "tsx watch src/index.ts",
    "build": "pkgroll",
    "start": "node dist/index.js",
    "test": "vitest"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "description": "",
  "devDependencies": {
    "@types/bcryptjs": "^2.4.6",
    "@types/cors": "^2.8.17",
    "@types/express": "^5.0.0",
    "@types/jsonwebtoken": "^9.0.7",
    "@types/luxon": "^3.6.2",
    "@types/morgan": "^1.9.9",
    "@types/multer": "^1.4.12",
    "@types/node": "^22.10.6",
    "@types/supertest": "^6.0.2",
    "@types/swagger-jsdoc": "^6.0.4",
    "@types/swagger-ui-express": "^4.1.8",
    "@types/validator": "^13.12.2",
    "@types/winston": "^2.4.4",
    "pkgroll": "^2.5.1",
    "supertest": "^7.0.0",
    "tsx": "^4.19.2",
    "typescript": "^5.7.2",
    "vitest": "^3.2.3"
  },
  "dependencies": {
    "bcryptjs": "^2.4.3",
    "cors": "^2.8.5",
    "dotenv": "^16.4.7",
    "express": "^4.21.2",
    "express-rate-limit": "^7.4.1",
    "googleapis": "^148.0.0",
    "joi": "^17.13.3",
    "jsonwebtoken": "^9.0.2",
    "luxon": "^3.6.1",
    "morgan": "^1.10.0",
    "multer": "^1.4.5-lts.2",
    "nanoid": "^5.0.9",
    "pg": "^8.13.1",
    "pg-hstore": "^2.3.4",
    "reflect-metadata": "^0.2.2",
    "sequelize": "^6.37.5",
    "sequelize-typescript": "^2.1.6",
    "swagger-jsdoc": "^6.2.8",
    "swagger-ui-express": "^5.0.1",
    "winston": "^3.17.0",
    "winston-daily-rotate-file": "^5.0.0"
  }
}