Node.js
Desarrollo de CLI
Diseño de herramientas de línea de comandos con Node.js: argumentos, stdin y stdout, códigos de salida, prompts, señales, empaquetado y experiencia de uso.
- Última actualización
- Actualizada
- Nivel
- Aplicación
Node.js
Diseño de herramientas de línea de comandos con Node.js: argumentos, stdin y stdout, códigos de salida, prompts, señales, empaquetado y experiencia de uso.
#!/usr/bin/env node{ "bin": { "orders": "./bin/orders.js" } }El archivo necesita permisos de ejecución en sistemas Unix y debe evitar output decorativo que rompa automatización.
const args = process.argv.slice(2);
const input = args[0];
if (!input) {
console.error("Usage: orders <file>");
process.exitCode = 2;
}Distingue errores de uso, fallos operacionales y resultados válidos vacíos.
for await (const chunk of process.stdin) {
process.stdout.write(chunk);
}process.stdout.isTTY indica si la salida está conectada a terminal. Usa colores y progreso solo cuando aporten y permite desactivarlos. Nunca requieras prompts cuando stdin no es interactivo.
Una CLI útil acepta stdin, produce output estable, usa exit codes y permite encadenarse.
cat orders.json | orders validate | jq .errorsCaptura SIGINT para cerrar archivos temporales o subprocesos, pero conserva un timeout. Un segundo Ctrl+C puede requerir terminación inmediata.
Prueba parsing como función pura y ejecuta el binario como subproceso para comprobar stdout, stderr, exit code y señales.
Errores y confiabilidad define cómo fallan los programas Node.js.