Hace unos días trabajaba con unos repositorios que tenían una extraña manera de ser inicializados:
npm start <auth_token>
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);
});
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
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]);
});
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!
Aquí inicio el servidor con un token random. Guardo este token en una variable y funciona correctamente.
const token = process.argv[2]
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)