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 ?

Laurent Couvidou
fuente
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.

TheHippo
fuente
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.

Patrik Affentranger
fuente
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

Salvador Dalí
fuente
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
David Beckwith
fuente
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>
chrissavage
fuente
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

Fergie
fuente
¡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
Farhan Yaseen
fuente
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"

JoshuaDavid
fuente
21

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

npm info <package name> version

Sobin Sunny
fuente
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
Benoit Blanchon
fuente
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.

KundraLaci
fuente
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
Shekhar Tyagi
fuente
10

Probar con:

npm list --depth 1 --global packagename
Eduardo Cuomo
fuente
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.

Ran Yitzhaki
fuente
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

kavigun
fuente
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
Sergio
fuente
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.

Mahendra Pratap
fuente
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:[email protected]:;
  • el grepcomando extrae el valor entre @y :, inclusive;
  • El sedcomando elimina los caracteres circundantes.
wjordan
fuente
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 @.

JGFMK
fuente
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.

Aliaksei
fuente
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.

zumafra
fuente
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.

Akash
fuente
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

Nitina
fuente
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
2

npm list package-name da la versión instalada actualmente

Nandhiny Durai
fuente
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

Daksh Patel
fuente