NPM
- Gestiona paquetes pero no facilita la vida ejecutando ninguno.
NPX
- Una herramienta para ejecutar paquetes Node.
NPX
viene incluido con la NPM
versión5.2+
NPM
por 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.json
archivo.
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%/npm
Windows.
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.json
archivo y agregando ese paquete en la scripts
secció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:
npx
comprobará si <command>
existe $PATH
o en los binarios locales del proyecto y lo ejecutará. Entonces, para el ejemplo anterior, si desea ejecutar el paquete instalado localmente, some-package
todo 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 react
plantilla 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-app
Es un generador.npx
va 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.