NPM- Gestiona paquetes pero no facilita la vida ejecutando ninguno.
NPX- Una herramienta para ejecutar paquetes Node.
NPXviene incluido con la NPMversión5.2+
NPMpor sí solo no ejecuta ningún paquete. no ejecuta ningún paquete de hecho. 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 se vincula 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/bin) en Linux o en %AppData%/npmWindows.
Documentación que deberías leer
NPM:
Uno podría instalar un paquete localmente en un determinado proyecto:
npm install some-package
Ahora supongamos que desea que NodeJS ejecute ese paquete desde la línea de comandos:
$ some-package
Lo anterior fallará . Solo los paquetes instalados globalmente pueden ejecutarse escribiendo su nombre solamente .
Para solucionar esto y ejecutarlo, debe escribir la ruta local:
$ ./node_modules/.bin/some-package
Técnicamente, puede ejecutar un paquete instalado localmente editando su packages.jsonarchivo y agregando ese paquete en la scriptssección:
{
"name": "whatever",
"version": "1.0.0",
"scripts": {
"some-package": "some-package"
}
}
Luego ejecute el script usando npm run-script(o npm run):
npm run some-package
NPX:
npxcomprobará si <command>existe $PATHo en los binarios locales del proyecto y lo ejecutará. Entonces, para el ejemplo anterior, si desea ejecutar el paquete instalado localmente, some-packagetodo lo que necesita hacer es escribir:
npx some-package
Otra ventaja importantenpx es la capacidad de ejecutar un paquete que no estaba instalado previamente:
$ npx create-react-app my-app
El ejemplo anterior generará una reactplantilla de aplicación dentro de la ruta en la que se ejecutó el comando, y asegura que siempre use la última versión de un generador o herramienta de compilación sin tener que actualizar cada vez que esté a punto de usarlo.
Preguntas relacionadas:
- ¿Cómo usar el paquete instalado localmente en node_modules?
- NPM: ¿cómo obtener la carpeta ./node_modules/.bin?
- ¿Cómo ejecutas un archivo js usando scripts npm?
create-react-appEs un generador.npxva a internet y descarga el paquete temporalmente para poder ejecutarlo ( np x ). Lo que obtienes (y quieres) es la salida, que se guarda localmente, donde ejecutaste el comando.