javascript - node - ¿Diferencia entre npx y npm?
yarn (7)
Presentamos npx: an npm package runner
NPM
-
Administra
paquetes
pero
no facilita la
ejecución de
ninguno.
NPX
- Una herramienta para
ejecutar
paquetes de nodos.
NPX
viene incluido con la versión5.2+
NPM
NPM
por sí solo no ejecuta ningún paquete.
de hecho, no ejecuta ningún paquete.
Si desea ejecutar un paquete utilizando NPM, debe especificar ese paquete en su archivo
package.json
.
Cuando los ejecutables se instalan a través de paquetes NPM, NPM los vincula con ellos:
-
Las
instalaciones
locales
tienen "enlaces" creados en el directorio
./node_modules/.bin/
. -
las
instalaciones
globales
tienen "enlaces" creados desde el directorio
bin/
global (por ejemplo,/usr/local/bin
) en Linux o en%AppData%/npm
en Windows.
NPM:
Uno podría instalar un paquete localmente en un proyecto determinado:
npm install some-package
Ahora digamos 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 solo su nombre.
Para solucionar este problema y ejecutarlo, debe escribir la ruta local:
$ ./node_modules/.bin/some-package
Técnicamente puede ejecutar un paquete instalado localmente editando su archivo
packages.json
y agregando ese paquete en la sección de
scripts
:
{
"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
verificará si
<command>
existe en
$PATH
, o en los archivos binarios del proyecto local, y lo ejecutará.
Por lo tanto, para el ejemplo anterior, si desea ejecutar el paquete instalado localmente en
some-package
todo lo que necesita hacer es escribir:
npx some-package
Otra ventaja
importante
de
npx
es la capacidad de ejecutar un paquete que no se instaló previamente:
$ npx create-react-app my-app
El ejemplo anterior generará una aplicación reactiva dentro de la ruta en la que se ejecutó el comando, y garantiza 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 usarla.
Preguntas relacionadas:
- ¿Cómo usar el paquete instalado localmente en node_modules?
- NPM: ¿cómo se origina la carpeta ./node_modules/.bin?
- ¿Cómo ejecutas un archivo js usando npm scripts?
Acabo de empezar a aprender React y Facebook ayuda a simplificar la configuración inicial al proporcionar el siguiente proyecto ya hecho.
Enlace a la cuenta de Facebook en Github:
https://github.com/facebook/create-react-app
Si tengo que instalar el proyecto de esqueleto, tengo que escribir
npx create-react-app my-app
en la línea de comandos.
Me preguntaba por qué la cuenta de Facebook en Github tiene
npx create-react-app my-app
lugar de
npm create-react-app my-app
?
Aquí hay un ejemplo de NPX en acción: npx cowsay hello
Si escribes eso en tu terminal bash verás el resultado. El beneficio de esto es que npx ha instalado temporalmente cowsay. No hay contaminación de paquetes ya que cowsay no se instala de forma permanente. Esto es ideal para paquetes únicos en los que desea evitar la contaminación de paquetes.
Como se mencionó en otras respuestas, npx también es muy útil en los casos en que (con npm) el paquete debe instalarse y configurarse antes de ejecutarse. Por ejemplo, en lugar de usar npm para instalar y luego configurar el archivo json.package y luego llamar al comando de ejecución configurado, simplemente use npx en su lugar. Un ejemplo real: npx create-react-app my-app
NPM es un administrador de paquetes, puede instalar los paquetes de node.js usando NPM
NPX es una herramienta para ejecutar paquetes node.js.
No importa si instaló ese paquete globalmente o localmente. NPX lo instalará temporalmente y lo ejecutará. NPM también puede ejecutar paquetes si configura un archivo package.json y lo incluye en la sección de script.
Entonces, recuerde esto, si desea comprobar / ejecutar un paquete de nodo rápidamente sin instalar local o globalmente, use NPX.
np M - Gerente
np X - Ejecutar - fácil de recordar
NPX:
Los desarrolladores web pueden tener docenas de proyectos en sus máquinas de desarrollo, y cada proyecto tiene su propio conjunto particular de dependencias instaladas de npm. Hace unos años, el consejo habitual para tratar con aplicaciones de CLI como Grunt o Gulp era instalarlas localmente en cada proyecto y también a nivel mundial para que pudieran ejecutarse fácilmente desde la línea de comandos.
Pero la instalación global causó tantos problemas como resolvió. Los proyectos pueden depender de diferentes versiones de las herramientas de la línea de comandos, y la contaminación del sistema operativo con muchas herramientas CLI específicas del desarrollo tampoco es excelente. Hoy en día, la mayoría de los desarrolladores prefieren instalar herramientas localmente y dejarlo así.
Las versiones locales de herramientas permiten a los desarrolladores extraer proyectos de GitHub sin preocuparse por las incompatibilidades con las versiones de herramientas instaladas globalmente. NPM solo puede instalar versiones locales y listo. Pero las instalaciones específicas del proyecto no están exentas de problemas: ¿cómo ejecutar la versión correcta de la herramienta sin especificar su ubicación exacta en el proyecto o jugar con alias?
Ese es el problema que npx resuelve. Una nueva herramienta incluida en NPM 5.2, npx es una pequeña utilidad que es lo suficientemente inteligente como para ejecutar la aplicación correcta cuando se llama desde un proyecto.
Si desea ejecutar la versión local de mocha para el proyecto, por ejemplo, puede ejecutar npx mocha dentro del proyecto y hará lo que usted espera.
Un beneficio adicional útil de npx es que instalará automáticamente los paquetes npm que aún no están instalados. Entonces, como señala el creador de la herramienta Kat Marchán, puede ejecutar npx benny-hill sin tener que lidiar con Benny Hill contaminando el medio ambiente global.
Si desea probar npx por un giro, actualice a la versión más reciente de npm.
Si usa npm 5.1 o anterior , no puede usar npx. En su lugar, instale create-react-app globalmente:
npm install -g create-react-app
Ahora puedes correr:
crear-reaccionar-aplicación mi aplicación
npx
ejecuta un comando de un paquete sin instalarlo explícitamente.
Casos de uso:
- No desea instalar paquetes ni globalmente ni localmente.
- No tienes permiso para instalarlo globalmente.
- Sólo quiero probar algunos comandos.
Sintaxis:
npx [options] [-p|--package <package>] <command> [command-arg]...
El paquete es opcional:
npx -p uglify-js uglifyjs --output app.min.js app.js common.js
+----------------+ +--------------------------------------------+
package (optional) command, followed by arguments
Por ejemplo:
Start a HTTP Server : npx http-server
Lint code : npx eslint ./src
# Run uglifyjs command in the package uglify-js
Minify JS : npx -p uglify-js uglifyjs -o app.min.js app.js common.js
Minify CSS : npx clean-css-cli -o style.min.css css/bootstrap.css style.css
Minify HTML : npx html-minifier index-2.html -o index.html --remove-comments --collapse-whitespace
Scan for open ports : npx evilscan 192.168.1.10 --port=10-9999
Cast video to Chromecast : npx castnow http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerFun.mp4
Más sobre el
command
:
npx es un corredor de paquetes npm (x probablemente significa eXecute). El uso típico es descargar y ejecutar un paquete temporalmente o para pruebas.
create-react-app es un paquete npm que se espera que se ejecute solo una vez en el ciclo de vida de un proyecto. Por lo tanto, es preferible usar npx para instalarlo y ejecutarlo en un solo paso.
Como se menciona en la página de manual https://www.npmjs.com/package/npx , npx puede ejecutar comandos en el PATH o desde node_modules / .bin de forma predeterminada.
Nota: con algunas excavaciones, podemos encontrar que create-react-app apunta a un archivo Javascript (posiblemente a /usr/lib/node_modules/create-react-app/index.js en sistemas Linux) que se ejecuta dentro del entorno de nodo . Esto es simplemente una herramienta global que hace algunas comprobaciones. La configuración real se realiza mediante react-scripts, cuya última versión está instalada en el proyecto. Consulte https://github.com/facebook/create-react-app para obtener más información.