Encontre a versão de um pacote npm instalado


2199

Como encontrar a versão de um pacote node.js / npm instalado ?

Isso imprime a versão do próprio npm:

npm -v <package-name>

Isso imprime um erro enigmático:

npm version <package-name>

Isso imprime a versão do pacote no registro (ou seja, a versão mais recente disponível):

npm view <package-name> version

Como obtenho a versão instalada ?


5
Na minha instalação, "npm -v <nome da embalagem>" relata a versão do npm, por si só. Para listar a versão mais recente de um pacote no registro, descobri que "npm view <package-name> version" executa o trabalho.
David A. Gray

15
npm showmostra o mais recente em NPM, não instalado
Tsagana Nokhaeva

Respostas:


2578

npm listpara pacotes locais ou npm list -gpara pacotes instalados globalmente.

Você pode encontrar a versão de um pacote específico, passando seu nome como argumento. Por exemplo, npm list gruntresultará em:

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

Como alternativa, você pode simplesmente executar npm listsem passar um nome de pacote como argumento para ver as versões de todos os seus pacotes:

├─┬ 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 

Você também pode adicionar --depth=0argumento para listar pacotes instalados sem suas dependências.


126
No mac e linux, é bom adicionar "| grep module_name", para filtrar a versão desejada do módulo. Especialmente ao executar globalmente com -g. Por exemplo: "npm list -g | grep express" para obter a versão expressa instalada.
Guya

103
Se você deseja um módulo específico, você pode executá-lo como npm list less-middlewareum exemplo.
juanpaco

13
De acordo com a dica da @ guya para sistemas baseados em * nix, no Windows, você pode usar o PowerShell para obter resultados semelhantes: | select-string module_namepara filtrar o módulo. Ou, se você estiver usando o Git Bash (ou apenas o Bash, nesse caso), poderá usá-lo grep.
1228 Noel Noel

15
Se você não consegue se lembrar list, npm lstambém funciona. De fato, muitos comandos npm têm aliases e, além disso, se você digitar uma substring de um comando, se essa substring for inequívoca, também funcionará; por exemplo npm ls, npm list, npm lissão todos iguais. Se você quiser uma saída mais detalhada, tente npm ll(mas provavelmente você deseja --depth=0adicionar a ela).
Jakub.g 16/05

4
A saída não é a melhor para analisar com um script. Existe realmente não é uma maneira de obter uma saída que é apenas a versão do pacote sem ter que fazer algo assimnpm list -g | awk -F@ '/<package>/ { print $2}'
Thayne

868

Outra maneira rápida de descobrir quais pacotes estão instalados localmente e sem suas dependências é usar:

npm list --depth=0

O que lhe dá 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, o mesmo pode ser feito globalmente npm list -g --depth=0.

Este método é mais claro caso você tenha instalado muitos pacotes.

Para descobrir quais pacotes precisam ser atualizados, você pode usar npm outdated -g --depth=0.


14
é me dar o mesmo que sem o
profundidade

7
parece que eles o corrigiram na npm 1.4.6. Veja github.com/npm/npm/issues/4733
Howie

7
Funciona muito bem com| grep <package_name>
Marco Prins

4
@ygaradon correto, mas o --depth=0torna mais rápido, porque ele não tem a dependências de carga de forma recursiva
Marco Prins

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

220

npm view <package> version - retorna a versão mais recente disponível no pacote.

npm list --depth=0 - retorna versões de todos os módulos instalados sem dependências.

npm list - retorna versões de todos os módulos e dependências.

E, finalmente, para obter a versão do nó: node -v


16
vista npm <package> versão, vai para o registro remoto NPM, não sistema de arquivos local ...
Alexander Mills

@AlexanderMills True, mas tê-lo aqui evita outra pesquisa. Btw, npm v, npm infoe npm showsão todos alias npm view.
precisa saber é o seguinte

85
npm info YOUR_PACKAGE version

por exemplo

npm info grunt version
0.4.5

105
Isso não mostra a versão do pacote instalado, apenas mostra a versão mais recente disponível.
Tanner Semerad 22/08/2015

Concorde com @ tanner-semerad. Eu verifiquei no Documentos do npm para esclarecê-lo. npm infoé o pseudônimo para npm viewe no Documentos do npm você encontrará essa posição: Este comando mostra dados sobre um pacote e os imprime no fluxo referenciado pela configuração outfd, cujo padrão é stdout. [...] A versão padrão é "mais recente" se não for especificada. É assim que eu voto.
Dannydedog 06/07/19

Mostra a versão mais recente disponível, não a mais recente instalada. Votado.
Lofihelsinki 29/11

2
npm info YOUR_PACKAGE versionO único que trabalhou :)
GOXR3PLUS

mesmo, 'npm info YOUR_PACKAGE version' O único que funcionou
Jonas

63

Eu apenas usei

npm list | grep <package name>

e funcionou muito bem

No Windows, execute:

npm list | find <package name>

No PowerShell, execute:

npm list | sls <package name>

3
findversão não funciona para mim - mesmo com string, mas PowerShell funciona bem
fiat

4
Para usuários do Windows: npm list -g --depth=0 |find "<package name>" Observe as aspas duplas
robe007

56

Na raiz do pacote, faça:

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

EDIT : (então você precisa cdentrar no diretório inicial do módulo, se ainda não estiver lá. Se você instalou o módulo npm install, ele estará em node_modules/<module_name>)

EDIT 2 : atualizado conforme resposta de @ jeff-dickey


Agradável! Um pouco mais rápido que a execução da "lista npm", como sugerem as outras respostas (~ 1s em vez de ~ 20s) - pelo menos quando você tem esse snippet de código pronto! (não deve ser realmente um plugin npm para fazer isso ...)
Venryx

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

2
Isso não vai obter a versão atual instalada se houver um delimitador de gama como ^ ~
geedew

21

Para pacotes locais

npm list --depth=0

Para pacotes globais

npm list  -g --depth=0

21

Combinar algumas das respostas acima e produzir uma pesquisa super simples e super rápida.
Execute a partir da raiz do projeto. Não é necessário cdentrar em nenhuma pasta, apenas 1 linha:

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


21

Você também pode verificar a versão com este comando:

npm info <package name> version


29
Novamente, mostra a versão mais recente disponível no registro do pacote e não a versão do pacote atualmente instalado.
David Ferenczy Rogožan

@DawidFerenczy Concordo com a versão mais recente do programa, como npm info httpaction
Nitin.

16

Se você concordar em instalar o jq , poderá usar a saída JSON de npm list.

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

ou, se você quiser ser detalhado

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

Por exemplo:

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

Além disso, o formato JSON é um pouco diferente para pacotes globais, portanto, você precisará alterar a consulta.

Por exemplo:

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

14

Se você for corajoso o suficiente (e tiver nodeinstalado), sempre poderá fazer algo como:

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

Isso imprimirá a versão do pacote atual. Você também pode modificá-lo para ficar louco, assim:

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

Isso imprimirá a versão do WHATEVER_PACKAGE_NAMEpacote, vista por npm version.


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

12

Para ver todos os pacotes instalados local ou globalmente, use estes comandos:

  1. npm listpara pacotes locais ou npm list -gpara pacotes instalados globalmente.
  2. npm list --depth=0
  3. npm list | sls <package name>
  4. node -v


10

Eu construí uma ferramenta que faz exatamente isso - qnm

qnm - Um utilitário CLI simples para consultar o node_modulesdiretório.

Instale-o usando:

npm i --global qnm

e corra:

qnm [module]

por exemplo:

> qnm lodash

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

Que significa que temos lodashinstalado na raiz do node_modulese duas outras cópias nos node_modulesde cli-table2e karma.

É muito rápido e possui alguns recursos interessantes, como a conclusão de guias e a pesquisa por correspondência.


9

Para listar pacotes locais com o número da versão, use:

npm ls --depth=0

Para listar pacotes globais com o número da versão, use:

npm ls -g --depth=0


8

Você pode usar a versão do npm view [module] , a versão do npm info [module] , a versão do npm show [module] ou a versão do npm v [module] para verificar a versão em um módulo npm instalado.

Vamos supor que a versão do meu módulo grunt seja a 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 aqueles mostrar a versão mais recente disponível, não a versão instalada atualmente
sth

8

npm list --depth 0 é o comando que mostra todas as bibliotecas com versão, mas você pode usar npm-check

O npm-check é uma boa biblioteca para gerenciar todas as coisas relacionadas ao evento do sistema de versões. Ele mostrará versões de bibliotecas, atualização de nova versão e versão não utilizada e muito mais.

para instalá-lo basta executar

npm install -g npm-check

e simplesmente corra

npm-check

verifique a captura de tela que está mostrando tudo sobre a versão do pacote, a nova atualização e a versão não utilizada.

insira a descrição da imagem aqui

Também funciona globalmente. De uma chance. Espero que isso ajude alguém.


7

Aqui está um Unix portátil (usando grepe sed) uma linha que retorna a string de versão de um pacote npm instalado globalmente (remova o gde -pgpara consultar os pacotes locais):

$ npm ll -pg --depth=0 grunt | grep -o "@.*:" | sed 's/.$//; s/^.//'
0.4.5
  • as npm llsaídas de uma corda parseable formatados como: /usr/lib/node_modules/npm:npm@2.14.8:;
  • o grepcomando extrai o valor entre @e :, inclusive;
  • o sedcomando remove os caracteres ao redor.

6

Adicionei isso ao meu .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

Agora tudo o que tenho a fazer é digitar:

  • npmv para a versão do npm, por exemplo:NPM version is: 4.2.0
  • npmv <nome do pacote> para a versão local, por exemplo:0.8.08
  • npmv <nome do pacote> g para a versão global, por exemplo:0.8.09
  • npmv <nome do pacote> l para a versão mais recente, por exemplo:0.8.10

Nota -d no comando de corte significa delimitar por, seguido de @, então f significa campo o 2 significa o segundo campo, pois haverá um dos lados do símbolo @.


5

Você pode tentar o seguinte: npm show {package} versionmostra a versão mais recente do pacote. E se o seu pacote estiver desatualizado, ele npm outdatedserá exibido com informações da versão.


2
O OP estava perguntando sobre a versão do pacote atualmente instalado , não a versão mais recente disponível no registro do pacote.
David Ferenczy Rogožan

5

Esta é uma pergunta simples e deve ter uma resposta mais simples do que a que vejo acima.

Para ver os pacotes npm instalados com sua versão, o comando é npm ls --depth=0, que, por padrão, exibe o que está instalado localmente. Para ver os pacotes instalados globalmente, adicione o -globalargumento: npm ls --depth=0 -global.

--depth=0 retorna uma lista de pacotes instalados sem suas dependências, que é o que você deseja fazer na maioria das vezes.

lsé o nome do comando e list é um alias para ls.


3

Acesse o package.json

Você pode acessar o package.jsonou bower.jsondo pacote com:

notepad ./node_modules/:packageName/package.json

Isso abrirá o package.jsonarquivo notepadque contém version numbero :packageNamearquivo incluído no arquivo command.

Por exemplo :

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

Boa sorte.


6
Não só existem maneiras muito mais fáceis de fazer isso, como a versão que você especificou no pacote.json pode não ser a versão instalada devido às notações de intervalo de semver. Ou seja, uma dependência pode ser especificada como versão ^ 1.3.0, mas isso pode significar algo da versão 1.3.0 a 1.99.99 #
Isochronous

3

Podemos usar o npm view any-promessa (o nome do seu módulo) -v


1
Isso mostra a versão mais recente disponível, não a versão no diretório local.
19718 Christianbundy

@christianbundy você pode usar a lista npm --depth = 0 | grep uuid
Nitin.

Eu tive que usar npm list --depth=0 | grep uuid | awk '{ print $2; }' | cut -d '@' -f 2, mas sim, isso funciona desde que seja uma dependência de nível superior. Não acho que seja sempre assim, com base na pergunta original.
christianbundy


0

É muito simples .. Basta digitar abaixo da linha

npm view < package-name > version

** Exemplo **

npm view redux version

Eu tenho a versão 7.2.0 do redux

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.