npm vs npx - ¿Cuál es la diferencia?

Si alguna vez usó Node.js, entonces debe haber usado npm con seguridad.

npm (administrador de paquetes de nodos) es el administrador de paquetes / dependencias que se obtiene al instalar Node.js. Proporciona una forma para que los desarrolladores instalen paquetes tanto a nivel global como local.

A veces, es posible que desee echar un vistazo a un paquete específico y probar algunos comandos. Pero no puede hacer eso sin instalar las dependencias en su node_modulescarpeta local .

Ahí es donde entra npx .

En este artículo, veremos las diferencias entre npm y npx y aprenderemos cómo obtener lo mejor de ambos.

Primero, entendamos qué es realmente npm y qué podemos hacer con él.

npm el administrador de paquetes

npm es un par de cosas. En primer lugar, es un repositorio en línea para la publicación de proyectos Node.js de código abierto.

En segundo lugar, es una herramienta CLI que le ayuda a instalar esos paquetes y administrar sus versiones y dependencias. Hay cientos de miles de bibliotecas y aplicaciones de Node.js en npm y cada día se agregan muchas más.

npm por sí solo no ejecuta ningún paquete. Si desea ejecutar un paquete usando npm, debe especificar ese paquete en su package.jsonarchivo.

Cuando los ejecutables se instalan a través de paquetes npm, npm crea enlaces a ellos:

  • las instalaciones locales tienen enlaces creados en el ./node_modules/.bin/directorio
  • las instalaciones globales tienen enlaces creados desde el bin/directorio global (por ejemplo: /usr/local/binen Linux o en %AppData%/npmWindows)

Para ejecutar un paquete con npm, debe escribir la ruta local, así:

$ ./node_modules/.bin/your-package

o puede ejecutar un paquete instalado localmente agregándolo a su package.jsonarchivo en la sección de scripts, así:

{ "name": "your-application", "version": "1.0.0", "scripts": { "your-package": "your-package" } }

Luego puede ejecutar el script usando npm run:

npm run your-package

Puede ver que ejecutar un paquete con npm simple requiere bastante ceremonia.

Afortunadamente, aquí es donde npx es útil.

npx el corredor de paquetes

Dado que la versión 5.2.0 de npm, npx se incluye previamente con npm. Así que es prácticamente un estándar hoy en día.

npx también es una herramienta CLI cuyo propósito es facilitar la instalación y administración de dependencias alojadas en el registro npm.

Ahora es muy fácil ejecutar cualquier tipo de ejecutable basado en Node.js que normalmente instalaría a través de npm.

Puede ejecutar el siguiente comando para ver si ya está instalado para su versión actual de npm:

$ which npx

Si no es así, puede instalarlo así:

$ npm install -g npx

Una vez que se asegure de tenerlo instalado, veamos algunos de los casos de uso que hacen que npx sea extremadamente útil.

Ejecute un paquete instalado localmente fácilmente

Si desea ejecutar un paquete instalado localmente, todo lo que necesita hacer es escribir:

$ npx your-package

npx comprobará si o existe en $PATH, o en los binarios de proyectos locales, y si es así lo ejecutará.

Ejecutar paquetes que no están instalados previamente

Otra ventaja importante es la capacidad de ejecutar un paquete que no se instaló previamente.

A veces, solo desea utilizar algunas herramientas CLI, pero no desea instalarlas globalmente solo para probarlas. Esto significa que puede ahorrar algo de espacio en disco y simplemente ejecutarlos solo cuando los necesite. Esto también significa que sus variables globales estarán menos contaminadas.

Ejecute código directamente desde GitHub

ejecutar-gist-script-con-npx

Este es bastante genial.

Puede usar npx para ejecutar cualquier gists y repositorios de GitHub. Centrémonos en ejecutar una esencia de GitHub porque es más fácil crear una.

El script más básico consiste en el archivo JS principal y un package.json. Una vez que haya configurado los archivos, todo lo que tiene que hacer es ejecutar el npx con el enlace a esa esencia como se muestra en la imagen de arriba.

Aquí puede encontrar el código que utilicé para este ejemplo.

Asegúrese de leer detenidamente cualquier script antes de ejecutarlo para evitar problemas graves que pueden ocurrir debido a códigos maliciosos.

Pruebe diferentes versiones de paquetes

npx hace que sea extremadamente fácil probar diferentes versiones de un paquete o módulo Node.js. Para probar esta increíble función, instalaremos el create-react-apppaquete localmente y probaremos una próxima versión.

Esto mostrará una lista de algunas etiquetas dist cerca del final de la salida. Las etiquetas Dist proporcionan alias para los números de versión, lo que facilita mucho la escritura.

$ npm v create-react-app
crear-react-app-dist-tags

Usemos npx para probar la nextetiqueta dist create-react-appque creará la aplicación dentro de un directorio sandbox.

$ npx [email protected] sandbox

npx instalará temporalmente la próxima versión de create-react-app, y luego se ejecutará para aplicar scaffolding a la aplicación e instalar sus dependencias.

Una vez instalada, podemos navegar a la aplicación así:

$ cd sandbox

y luego inícielo con este comando:

$ npm start
crear-reaccionar-aplicación-npx-próxima-versión

Se abrirá automáticamente la aplicación React en la ventana de su navegador predeterminado.

¡Ahora tenemos una aplicación que se ejecuta en la próxima versión del create-react-apppaquete!

index-page-react-app

Conclusión

npx nos ayuda a evitar el control de versiones, los problemas de dependencia y la instalación de paquetes innecesarios que solo queremos probar.

También proporciona una forma clara y fácil de ejecutar paquetes, comandos, módulos e incluso gists y repositorios de GitHub.

Si no ha usado npx antes, ¡ahora es un buen momento para comenzar!

Esto fue publicado originalmente en mi blog.

Puede comunicarse y preguntarme cualquier cosa en Twitter y Facebook.