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 ?

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

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

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

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

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

JoshuaDavid
fonte
21

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

npm info <package name> version

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

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

Tente com:

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

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

kavigun
fonte
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
Sérgio
fonte
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.

Mahendra Pratap
fonte
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:[email protected]:;
  • o grepcomando extrai o valor entre @e :, inclusive;
  • o sedcomando remove os caracteres ao redor.
wjordan
fonte
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 @.

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

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

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

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

Nitin.
fonte
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
2

npm list package-name fornece a versão atualmente instalada

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

Daksh Patel
fonte