Convertir tu CLI de Node.js en un binario instalable es el paso que transforma un script local en una herramienta de sistema que puedes invocar desde cualquier parte de la terminal. Aquí aprendes cómo exponer tu comando con la sección bin del package.json, instalarlo globalmente con npm link y dejarlo listo para publicar en npm.
Cómo expongo mi CLI como binario en package.json
El primer paso ocurre dentro del package.json. Después del campo main, agregas una sección bin que le indica a Node.js qué archivo debe ejecutarse cuando alguien escriba el nombre de tu comando en la terminal [00:12].
En el ejemplo, el comando se llama Platzi Assistant y apunta al archivo AI Assistant. Es decir, cuando ejecutes Platzi Assistant, internamente correrá ese script.
"bin": {
"platzi-assistant": "./ai-assistant.js"
}
Un detalle importante: solo estás exponiendo el binario que tú decidas. Si tu proyecto tiene varias CLIs, puedes elegir cuáles publicar y cuáles dejar como herramientas internas.
¿Qué hace la sección bin en package.json? Define qué archivos JavaScript se convierten en comandos ejecutables cuando el paquete se instala. Cada clave es el nombre del comando y cada valor es la ruta al script.
Cómo instalo mi CLI globalmente con npm link
Una vez configurado el bin, el siguiente paso es instalar la CLI en tu sistema sin necesidad de publicarla todavía. Para eso usas npm link desde el directorio donde vive tu package.json [01:05].
Con ese comando, npm registra tu paquete como si estuviera instalado globalmente y agrega el binario al path del sistema. Eso significa que puedes invocar Platzi Assistant desde cualquier carpeta de tu terminal, sin importar dónde estés parado.
En el ejemplo, después del link el autor ejecuta:
bash
platzi-assistant "¿Qué es hosting?"
Y la CLI responde usando la API key de Gemini configurada previamente. Tu programa ya se comporta como cualquier otro comando nativo de tu sistema.
¿Para qué sirve npm link? Sirve para instalar localmente un paquete en desarrollo como si fuera global. Es ideal para probar tu CLI antes de publicarla en npm.
Por qué funciona desde cualquier ruta
La razón es sencilla: npm agrega los binarios al path del sistema operativo. Cuando escribes el nombre del comando, el sistema lo busca en esas rutas registradas y lo ejecuta. No necesitas anteponer node ni rutas relativas.
Cómo publico mi CLI en npm para distribuirla
Con la CLI funcionando localmente, el siguiente paso natural es publicarla en npm para que cualquier persona pueda usarla. Una vez publicado tu paquete, hay dos formas comunes de consumirlo:
- Instalación global con
npm install -g nombre-del-paquete, que deja el binario disponible permanentemente.
- Ejecución directa con
npx nombre-del-paquete, sin necesidad de instalar nada.
La segunda opción es la que usan muchos creadores de herramientas modernas porque permite a los usuarios probar la CLI sin comprometer su sistema con instalaciones globales.
¿Qué diferencia hay entre npm install -g y npx? npm install -g instala el paquete de forma permanente en tu máquina. npx lo descarga y ejecuta una sola vez, sin dejar rastro tras el uso.
Qué aprendiste sobre Node.js avanzado en este recorrido
Más allá de las CLIs, este curso recorrió temas que forman la base del Node.js profesional. Estos son los pilares que viste:
- Patrones de diseño aplicados a Node.js para escribir código mantenible.
- Manejo de flujos y control de asincronía, dos áreas críticas en aplicaciones reales.
- El event loop y por qué entender su funcionamiento cambia la forma en que escribes código.
- Solución de problemas de performance y técnicas de observabilidad.
- Construcción de CLIs como herramientas prácticas en Node.js.
Cada uno de estos bloques se conecta con el otro. El event loop explica por qué controlas la asincronía de cierta forma. La observabilidad te ayuda a detectar cuellos de botella de performance. Y las CLIs son una manera concreta de aplicar todo lo anterior en programas útiles.
Qué hacer ahora con tu CLI
La invitación es a experimentar. Crea CLIs para automatizar tareas que repites a diario, para consultar APIs que usas seguido o para resolver problemas específicos de tu equipo. Si publicas tu paquete en npm, compártelo en los comentarios y cuéntame qué construiste.
¿Qué CLI vas a construir primero?