DEV Community

Lino Mattos
Lino Mattos

Posted on

¿Qué son los argumentos de la línea de comandos y para qué nos sirven en nodejs?

Hace unos días trabajaba con unos repositorios que tenían una extraña manera de ser inicializados:

npm start <auth_token>
Enter fullscreen mode Exit fullscreen mode

Analizando mejor el código di con process.argv que es un array que contiene los argumentos que le pasemos en la línea de comandos.

Al inicio puede sonar algo que no tenga mucha utilidad, pero en ciertos casos puede ahorrarnos tiempo al ejecutar node.
Te daré dos ejemplos.

Imaginemos que tenemos este sencillo código:

const express = require("express");
const app = express();
const port = 4000;

app.get("/", (req, res) => {
  res.send({message: "works!"});
});

app.listen(port, () => {
  console.log("Servidor levantado en puerto:", port);
});
Enter fullscreen mode Exit fullscreen mode

Una manera de cambiar el número de puerto es directamente en el código o con el uso de variables de entorno. Pero también podemos definirlo directamente cuando iniciamos el servidor desde la línea de comandos:

npm start 4001
Enter fullscreen mode Exit fullscreen mode
const express = require("express");
const app = express();

console.log(process.argv);
app.get("/", (req, res) => {
  res.send(process.argv[2]);
});

app.listen(process.argv[2], () => {
  console.log("Servidor levantado en puerto:", process.argv[2]);
});
Enter fullscreen mode Exit fullscreen mode

Ahora nuestra app inicia en el puerto 4001 ¿Qué pasó? Cómo indique anteriormente process.argv es un array que contiene los argumentos que le pasemos. Pueden ser uno o más argumentos y son tomados a partir del índice 2 (los dos primeros índices están reservados).
Ahora podemos iniciar la app desde el puerto que queramos sin modificar ninguna línea de código.

En el segundo ejemplo, supongamos que tenemos una API que necesita de un token para trabajar, hasta aquí nada del otro mundo, pero este token debe ser renovado cada hora.
Podemos ejecutar la renovación, copiar y pegar el token en el código cada hora o simplemente aprovechar la facilidad que nos da process.argv.

npm start uVMjbebCEFnj3=zl?Ha91fbddeoXjPcu!rO!aCd-UdbbNjWAVEVthegd5HEbgYs!
Enter fullscreen mode Exit fullscreen mode

Aquí inicio el servidor con un token random. Guardo este token en una variable y funciona correctamente.

const token = process.argv[2] 
Enter fullscreen mode Exit fullscreen mode

Espero te haya servido este dato, si no lo usas activamente quizá te lo encuentres en algún momento y no está demás conocerlo.

Top comments (0)