Saltar a contenido

Todo lo que debes saber del archivo package.json

El archivo package.json nos servirá de gran ayuda en cualquier proyecto, nos permitirá crear scripts y controlar mucho mejor este mismo.

Al iniciar un proyecto, nuestro package.json se verá algo parecido a esto:

{
  "name": "mynewapp",
  "version": "1.0.0",
  "description": "Esto es una descripcion",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [
    "ejemplo",
    "tallernodejs"
  ],
  "author": "leivaa21",
  "license": "ISC"
}

Un ejemplo de package.json más trabajado podria ser el siguiente.

{
  "name": "leivaastdio",
  "version": "1.0.0",
  "description": "This is a bot developed for administrate a discord server. Made while learning about JS and some libraries. By Leivaa",
  "main": "src/index.js",
  "scripts": {
    "start": "pm2 flush LeivaaDiscordJS && pm2 start src/index.js --name LeivaaDiscordJS",
    "restart": "npm stop && npm start",
    "dev": "pm2 flush LeivaaDiscordJS && pm2 start src/index.js --name LeivaaDiscordJS --watch && npm run logs",
    "stop": "pm2 stop LeivaaDiscordJS && pm2 delete LeivaaDiscordJS",
    "logs": "pm2 logs --name LeivaDiscordJS",
    "status": "pm2 status --name LeivaDiscordJS",
    "list": "pm2 list"
  },
  "keywords": [],
  "author": "Leivaa21",
  "license": "MIT",
  "dependencies": {
    "discord.js": "^12.5.1",
    "emoji-regex": "^10.0.0",
    "esm": "^3.2.25",
    "fs": "0.0.1-security",
    "pm2": "^5.1.2",
    "replace-json-property": "^1.7.1"
  },
  "devDependencies": {
    "dotenv": "^8.2.0"
  }
}

Como podemos ver, el package.json será el archivo donde node guardará toda la información sobre nuestro proyecto, asi como sus dependencias, licencia, autor, scripts, etc...

Creacion de scripts en npm

Para crear un script con npm solo tendremos que añadirlo al package.json en la propiedad "scripts" con el formato

"Nombre": "comando a ejecutar"

Y para ejecutar el script utilizaremos:

$ npm run Nombre

npm start, stop & restart

Node reserva los scripts start, restart y stop por lo que podremos utilizarlos sin run, es decir

$ npm start

$ npm stop

$ npm restart

Scripts pre y post

Además tambien podremos setear scripts que se ejecuten siempre antes o despues de un script en especifico de manera automática. Para ello solo tendremos que seguir el formato:

"preNombre": "comando a ejecutar antes del script Nombre"
"Nombre": "comando a ejecutar"
"postNombre": "comando a ejecutar despues del script Nombre"

De esta forma, al ejecutar npm run Nombre se ejecutará preNombre, Nombre y postNombre en ese orden.

Info

No es necesario crear un pre y post de cada script, de hecho podremos tener scripts con solo pre, con solo post, con ambos o con ninguno de los dos!

Dependencias

Que las dependencias esten reflejadas en el package.json nos permitirá descargar un proyecto sin sus dependencias instaladas (sin tener la carpeta /node_modules) y que tan solo utilizando npm install nos instale todas las dependencias necesarias, lo que nos dará una salida similar a esta:
EjemploSalidaNpmInstall

Importancia de la licencias

Una licencia determinará que se puede y que no se puede hacer con tu codigo, por lo que es altamente recomendable utilizar una licencia que se ajuste a tus intenciones.


Última actualización: November 3, 2021