Encuentra la versión de un paquete npm instalado


2200

¿Cómo encontrar la versión de un paquete node.js / npm instalado ?

Esto imprime la versión de npm en sí:

npm -v <package-name>

Esto imprime un error críptico:

npm version <package-name>

Esto imprime la versión del paquete en el registro (es decir, la última versión disponible):

npm view <package-name> version

¿Cómo obtengo la versión instalada ?


55
En mi instalación, "npm -v <package-name>" informa la versión de npm, en sí misma. Para enumerar la última versión de un paquete en el registro, he encontrado que "npm view <package-name> version" hace el trabajo.
David A. Gray

15
npm showmuestra lo último en npm, no instalado
Tsagana Nokhaeva

Respuestas:


2579

npm listpara paquetes locales o npm list -gpara paquetes instalados globalmente.

Puede encontrar la versión de un paquete específico pasando su nombre como argumento. Por ejemplo, npm list gruntresultará en:

projectName@projectVersion /path/to/project/folder
└── grunt@0.4.1

Alternativamente, puede ejecutar npm listsin pasar un nombre de paquete como argumento para ver las versiones de todos sus paquetes:

├─┬ cli-color@0.1.6 
 └── es5-ext@0.7.1 
├── coffee-script@1.3.3 
├── less@1.3.0 
├─┬ sentry@0.1.2 
 ├── file@0.2.1 
 └── underscore@1.3.3 
└── uglify-js@1.2.6 

También puede agregar --depth=0argumentos para enumerar los paquetes instalados sin sus dependencias.


126
En mac y linux es bueno agregar "| grep nombre_módulo", para filtrar la versión deseada del módulo. Especialmente cuando se ejecuta globalmente con -g. Por ejemplo: "npm list -g | grep express" para obtener la versión express instalada.
guya

103
Si desea un módulo específico, puede ejecutarlo npm list less-middlewarecomo un ejemplo.
juanpaco

13
Según la sugerencia de @ guya para sistemas basados ​​en * nix, en Windows puede usar PowerShell para obtener resultados similares: | select-string module_namepara filtrar el módulo. O, si está usando Git Bash (o solo Bash, para el caso), puede usar grep.
Noel

15
Si no puedes recordar list, npm lstambién funciona. De hecho, muchos comandos npm tienen alias y, además, si escribe una subcadena de un comando, si esta subcadena no es ambigua, también funcionará; por ejemplo npm ls, npm list, npm lisson todos iguales. Si desea un resultado más detallado, intente npm ll(pero probablemente quiera --depth=0agregarlo).
jakub.g

44
La salida no es la mejor para analizar con un script. ¿Realmente no hay una manera de obtener una salida que sea solo la versión del paquete sin tener que hacer algo comonpm list -g | awk -F@ '/<package>/ { print $2}'
Thayne

868

Otra forma rápida de descubrir qué paquetes están instalados localmente y sin sus dependencias es usar:

npm list --depth=0

Que te da algo como

├── bower@0.8.6
├── grunt@0.4.1
├── grunt-bower-requirejs@0.4.3
├── grunt-contrib-clean@0.4.1
├── grunt-contrib-coffee@0.7.0
├── grunt-contrib-copy@0.4.1
├── grunt-contrib-imagemin@0.1.4
├── grunt-contrib-jshint@0.1.1
├── grunt-contrib-livereload@0.1.2
├── grunt-contrib-requirejs@0.4.1
├── grunt-regarde@0.1.1
└── grunt-svgmin@0.1.0

Obviamente, lo mismo se puede hacer globalmente con npm list -g --depth=0.

Este método es más claro en caso de que haya instalado muchos paquetes.

Para saber qué paquetes deben actualizarse, puede usar npm outdated -g --depth=0.


14
me da lo mismo que sin la
profundidad

77
parece que lo arreglaron en npm 1.4.6. Ver github.com/npm/npm/issues/4733
Howie

77
Funciona muy bien con| grep <package_name>
Marco Prins

44
@ygaradon Correcto, pero esto lo --depth=0hace más rápido, ya que no tiene que cargar dependencias recursivamente
Marco Prins

npm list -g --depth=0para módulos de lista instalados globalmente
EdgeDev

220

npm view <package> version - Devuelve la última versión disponible en el paquete.

npm list --depth=0 - Devuelve versiones de todos los módulos instalados sin dependencias.

npm list - Devuelve versiones de todos los módulos y dependencias.

Y por último para obtener la versión del nodo: node -v


16
npm view <package> versión, va al registro remoto npm, no al sistema de archivos local ...
Alexander Mills

@AlexanderMills True, pero tenerlo aquí evita otra búsqueda de eso. Por cierto, npm v, npm infoy npm showson todos de alias npm view.
CPHPython

85
npm info YOUR_PACKAGE version

p.ej

npm info grunt version
0.4.5

105
Esto no muestra la versión del paquete instalado, solo muestra la última versión disponible.
Tanner Semerad

De acuerdo con @ tanner-semerad. Me registré en Docs de npm para aclararlo. npm infoes un alias para npm viewy en Docs de npm encontrará esa posición: este comando muestra datos sobre un paquete y lo imprime en la secuencia a la que hace referencia la configuración outfd, que por defecto es stdout. [...] La versión predeterminada es "última" si no se especifica. Así es como voto abajo.
dannydedog el

Muestra la última versión disponible, no la última instalada. Voto negativo
lofihelsinki

2
npm info YOUR_PACKAGE versionEl único que funcionó :)
GOXR3PLUS

mismo, 'npm info YOUR_PACKAGE version' El único que funcionó
Jonas

63

Acabo de usar

npm list | grep <package name>

y funcionó muy bien

En Windows ejecute:

npm list | find <package name>

En PowerShell, ejecute:

npm list | sls <package name>

3
findla versión no funciona para mí, incluso con la cadena citada, pero powershell funciona bien
fiat

44
Para usuarios de Windows: npm list -g --depth=0 |find "<package name>"
tenga en

56

Desde la raíz del paquete hacer:

node -p "require('./package.json').version"

EDITAR : (por lo que debe cdingresar al directorio de inicio del módulo si aún no está allí. Si ha instalado el módulo npm install, entonces estará debajo node_modules/<module_name>)

EDIT 2 : actualizado según la respuesta de @ jeff-dickey


¡Agradable! Bastante más rápido que ejecutar "npm list" como sugieren las otras respuestas (~ 1s en lugar de ~ 20s), ¡al menos cuando tenga listo este fragmento de código! (Realmente debería haber un complemento npm para hacer esto ...)
Venryx

1
onode -p "require('./package.json').version"
Jeff Dickey

2
Esto no obtendrá la versión real instalada si hay un delimitador de rango como ^ ~
geedew

21

Para paquetes locales

npm list --depth=0

Para paquetes globales

npm list  -g --depth=0

21

Combina algunas de las respuestas anteriores y produce una búsqueda súper simple y súper rápida.
Ejecutar desde la raíz del proyecto. No es necesario cdingresar a ninguna carpeta, solo 1 línea:

node -p "require('SOMEPACKAGE/package.json').version"


21

También puede verificar la versión con este comando:

npm info <package name> version


29
Nuevamente, muestra la última versión disponible en el registro del paquete, no la versión del paquete instalado actualmente.
David Ferenczy Rogožan

@DawidFerenczy De acuerdo con mostrar solo la última versión como npm info httpaction
Nitin.

16

Si acepta instalar jq , puede usar la salida JSON de npm list.

npm -j ls <package-name> | jq -r .version

o, si quieres ser detallado

npm --json list <package-name> | jq --raw-output '.version'

Por ejemplo:

$ npm -j ls ghost | jq -r .version
0.4.2

Además, el formato JSON es ligeramente diferente para los paquetes globales, por lo que deberá cambiar la consulta.

Por ejemplo:

$ npm -j -g ls | jq -r .dependencies.ghost.version
0.4.2

14

Si eres lo suficientemente valiente (y lo has nodeinstalado), siempre puedes hacer algo como:

echo "console.log(require('./package.json').version);" | node

Esto imprimirá la versión del paquete actual. También puede modificarlo para volverse loco, así:

echo "eval('var result='+require('child_process').execSync('npm version',{encoding:'utf8'})); console.log(result.WHATEVER_PACKAGE_NAME);" | node

Eso imprimirá la versión del WHATEVER_PACKAGE_NAMEpaquete, que es visto por npm version.


node -e "console.log(require('./package.json').version);"
papiro

12

Para ver todos los paquetes instalados local o globalmente, use estos comandos:

  1. npm listpara paquetes locales o npm list -gpara paquetes instalados globalmente.
  2. npm list --depth=0
  3. npm list | sls <package name>
  4. node -v


10

He creado una herramienta que hace exactamente eso - qnm

qnm: una utilidad CLI simple para consultar el node_modulesdirectorio.

Instálelo usando:

npm i --global qnm

y correr:

qnm [module]

por ejemplo:

> qnm lodash

lodash
├── 4.17.5
├─┬ cli-table2
 └── 3.10.1
└─┬ karma
  └── 3.10.1

Lo que significa que hemos lodashinstalado en la raíz de node_modulesy otras dos copias en el node_modulesde cli-table2y karma.

Es realmente rápido y tiene algunas características interesantes, como completar pestañas y buscar coincidencias.


9

Para enumerar paquetes locales con el número de versión, use:

npm ls --depth=0

Para enumerar paquetes globales con el número de versión, use:

npm ls -g --depth=0


8

Puede usar npm view [module] version , npm info [module] version , npm show [module] version o npm v [module] version para verificar la versión en un módulo npm instalado.

Supongamos que la versión de mi módulo ronco es la 0.4.5:

npm view grunt version => 0.4.5
npm info grunt version => 0.4.5
npm show grunt version => 0.4.5
npm v grunt version    => 0.4.5

15
Todos ellos muestran la versión más nueva disponible, no la versión instalada actualmente
sth

8

npm list --depth 0 es el comando que muestra todas las bibliotecas con versión pero puede usar npm-check

npm-check es una buena biblioteca para administrar todas esas cosas relacionadas con el evento del sistema de versiones, mostrará las versiones de las bibliotecas, la actualización de la nueva versión y la versión no utilizada y muchas más.

para instalarlo solo ejecuta

npm install -g npm-check

y simplemente corre

npm-check

verifique la captura de pantalla que muestra todo sobre la versión del paquete, la actualización de la nueva versión y la versión no utilizada.

ingrese la descripción de la imagen aquí

Funciona a nivel mundial también. darle una oportunidad. Espero que esto ayude a alguien.


7

He aquí un Unix portátil (usando grepy sed) de una sola línea que devuelve la cadena de versión de un paquete instalado a nivel mundial NPM-(quitar el gde -pgconsultar paquetes locales en su lugar):

$ npm ll -pg --depth=0 grunt | grep -o "@.*:" | sed 's/.$//; s/^.//'
0.4.5
  • las npm llsalidas de una cadena analizable mismo formato que: /usr/lib/node_modules/npm:npm@2.14.8:;
  • el grepcomando extrae el valor entre @y :, inclusive;
  • El sedcomando elimina los caracteres circundantes.

6

Agregué esto a mi .bashrc

function npmv {
    case $# in # number of arguments passed
    0) v="$(npm -v)" ; #store output from npm -v in variable
        echo "NPM version is: $v"; #can't use single quotes 
                                   #${v} would also work
    ;;   
    1) s="$(npm list --depth=0 $1 | grep $1 | cut -d @ -f 2)";
       echo "$s";
    ;;
    2) case "$2" in # second argument
        g) #global|#Syntax to compare bash string to literal
             s="$(npm list --depth=0 -g $1 | grep $1 | cut -d @ -f 2)";
        echo "$s";
        ;;
        l) #latest
             npm view $1 version; #npm info $1 version does same thing
       ;;
       *) echo 'Invalid arguments';
       ;;
       esac;
    ;;
    *) echo 'Invalid arguments';
    ;;
    esac;
}
export -f npmv

Ahora todo lo que tengo que hacer es escribir:

  • npmv para la versión de npm, por ejemplo:NPM version is: 4.2.0
  • npmv <package-name> para la versión local, por ejemplo:0.8.08
  • npmv <package-name> g para la versión global, por ejemplo:0.8.09
  • npmv <package-name> l para la última versión, por ejemplo:0.8.10

Nota -d en el comando de corte significa delimitar por, seguido de @, luego f significa campo, el 2 significa segundo campo, ya que habrá uno a cada lado del símbolo @.


5

Puede probar esto: npm show {package} versionmuestra la última versión del paquete. Y si su paquete está desactualizado, npm outdatedlo mostrará con información de la versión.


2
El OP preguntaba sobre la versión del paquete instalado actualmente , no la última versión disponible en el registro del paquete.
David Ferenczy Rogožan

5

Esta es una pregunta simple, y debería tener una respuesta más simple que la que veo arriba.

Para ver los paquetes npm instalados con su versión, el comando es npm ls --depth=0, que, de forma predeterminada, muestra lo que está instalado localmente. Para ver los paquetes instalados a nivel mundial, añadir el -globalargumento: npm ls --depth=0 -global.

--depth=0 devuelve una lista de paquetes instalados sin sus dependencias, que es lo que desea hacer la mayor parte del tiempo.

lses el nombre del comando y list es un alias para ls.


3

Acceder al package.json

Puede acceder al package.jsono bower.jsondel paquete con:

notepad ./node_modules/:packageName/package.json

Esto abrirá la package.jsonen notepadla que tiene el version numberde la :packageNamehaya incluido en el command.

Por ejemplo :

notepad ./node_modules/vue-template-compiler/package.json

Buena suerte.


66
No solo hay formas mucho más fáciles de hacer esto, la versión que ha especificado en su paquete.json puede no ser la versión instalada debido a las anotaciones de rango semver. Es decir, una dependencia puede especificarse como versión ^ 1.3.0, pero eso puede significar cualquier cosa desde la versión 1.3.0 a 1.99.99
Isochronous

3

Podemos usar npm view any-promise (el nombre de su módulo) -v


1
Esto muestra la última versión disponible, no la versión en el directorio local.
christianbundy

@christianbundy puedes usar la lista npm --depth = 0 | grep uuid
Nitin.

Tuve que usar npm list --depth=0 | grep uuid | awk '{ print $2; }' | cut -d '@' -f 2, pero sí, esto funciona siempre que sea una dependencia de nivel superior. Sin embargo, no creo que ese sea siempre el caso, basado en la pregunta original.
christianbundy


0

Es muy simple ... Solo escribe debajo de la línea

npm view < package-name > version

** Ejemplo **

npm view redux version

Tengo la versión 7.2.0 de redux

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.