Como instalar uma versão exata anterior de um pacote NPM?

916

Usei o nvm para baixar o nó v0.4.10 e instalei o npm para trabalhar com essa versão do nó.

Estou tentando instalar o express usando

npm install express -g

e recebo um erro que express exige a versão do nó> = 0.5.0.

Bem, isso é estranho, já que estou seguindo as instruções para um tutorial do node + express + mongodb aqui que usou o nó v0.4.10, portanto, estou assumindo que express está / estava disponível para o nó v0.4.10. Se minha suposição estiver correta, como digo ao npm para buscar uma versão que funcione com a minha instalação?

stewart99
fonte
7
Por que você não atualiza sua versão do nó? Certamente deve haver muito mais adições boas do que comportamentos quebrados que você encontrará.
Fabrício Matté 08/04
1
Às vezes isso não é uma opção. Se ele usou o nvm para fazer o downgrade, pode haver uma razão, como algum outro grupo controla a versão do nó executável que ele deve usar.
fool4jesus

Respostas:

1583

Se você precisar instalar uma versão mais antiga de um pacote, especifique-a

npm install <package>@<version>

Por exemplo: npm install [email protected]

Você também pode adicionar o --savesinalizador a esse comando para adicioná-lo às dependências do package.json ou --save --save-exactsinalizadores, se desejar a versão exata especificada nas dependências do package.json.

O installcomando está documentado aqui: https://docs.npmjs.com/cli/install

Se você não tiver certeza de quais versões de um pacote estão disponíveis, use:

npm view <package> versions

E também npm viewpode ser usado para visualizar outras coisas sobre um pacote. https://docs.npmjs.com/cli/view

Bret Copeland
fonte
4
Eu acredito que este irá instalar a versão principal mais próxima que os jogos, por isso pode não ser o que você espera stackoverflow.com/a/22345808/1074400
Aakil Fernandes
2
@AakilFernandes, se você especificar uma versão exata, será instalada uma versão exata. Se você especificar um intervalo de versão semântica, poderá obter uma correspondência não exata. Não há nada de exclusivo no comando install a esse respeito.
Bret Copeland
6
npm view <package> versions -jsonpara ver todas as versões, evitando as reticências no final de uma lista com muitas versões.
TheDarkIn1978 17/17/17
5
Se você usar npm install [email protected], não obterá a versão exata 3.0.0, a versão 3.xx mais recente. Para obter a versão específica, você precisa usar npm install [email protected] --save-exact. Veja este post: 60devs.com/npm-install-specific-version.html
Patrick Hund
5
@PatrickHund não, npm install [email protected]você receberá exatamente a versão 3.0.0. npm install express@^3.0.0obteria o 3.xx mais recente --save-exactafeta a forma como ele é gravado no packages.json, que eu já cobri na minha resposta. Observe também --save-exactque deve ser usado em combinação com um --saveou --save-dev- não é suficiente usá-lo por conta própria.
Bret Copeland
93

É bem fácil Basta escrever isso, por exemplo:

npm install -g npm@4.6.1

Ou:

npm install -g npm@latest    // For the last stable version
npm install -g npm@next      // For the most recent release
inaps
fonte
1
Obrigado pelas tags lateste nextversion!
Jimmy Adaro
@inaps, você pode adicionar uma observação de que o -gsinalizador é especificamente para pacotes que você deseja instalar globalmente, pois muitos usuários acessam esta página e apenas copiam / colam sem perceber como estão prestes a impactar seu ecossistema de pacotes. Todos nós já fomos "esse cara"
Jacksonkr
73

Primeiro remova a versão antiga e execute literalmente o seguinte:

npm install express@3.X

e para estável ou recente

npm install -g npm@latest    // For the last stable version
npm install -g npm@next      // For the most recent release
Saurabh Chandra Patel
fonte
12
Isso é literal Xou substituto para algum número de versão numérico?
21416 Keith Thompson
7
Essa foi uma pergunta de ou / ou não, sim / não. Eu tentei npm install [email protected], e parecia funcionar. Isso é um recurso ou um acidente da maneira que npmanalisa o número da versão?
Keith Thompson
3
@KeithThompson Sim, é! Hehe, estou brincando ... É a maneira npmanalisa-lo, consulte: docs.npmjs.com/misc/semver#x-ranges-12x-1x-12-
gonz
3
@gonz: Portanto, é literal X.
Keith Thompson
1
Eu só queria saber por que isso funcionou para você. Não conheço a intenção original de Saurabh ou o que você está tentando fazer. 3.X significaria> = 3.0 e <4.0.
Gonz 30/05
41

Na minha opinião, é a maneira mais fácil e rápida:

$ npm -v

4.2.0

$ npm install -g npm@latest-3

...

$ npm -v

3.10.10

Oleg Bezkorovaynyi
fonte
2

você pode atualizar seu pacote npm usando este comando:

npm install <package_name>@<version_number>

exemplo: npm install [email protected]

Mehedi Abdullah
fonte
1

Eu tenho uma maneira geral de resolver esse tipo de problemas, o que também pode ser útil, especialmente ao clonar repositórios para executá-los localmente, mas requer um pouco mais de análise das versões.

Com o pacote npm-check-updates, verifico as versões dos pacotes (de acordo com o arquivo package.json) que não estão declaradas nas últimas versões disponíveis, como mostra a figura ( https://www.npmjs.com/package/npm-check -updates ):

insira a descrição da imagem aqui

Com essas informações, podemos verificar o status de atualização dos diferentes pacotes e tomar decisões sobre quais pacotes atualizar / degradar e quais não.

Supondo que decidimos atualizar todos os pacotes conforme listados, podemos usar o ncu -ucomando que modifica apenas o arquivo package.json. Execute npm installpara atualizar os pacotes instalados e o package-lock.json.

Então, dependendo dos requisitos do repositório, podemos refinar o que é necessário, instalando as versões específicas com npm view <package> versionse npm install <package>@<version>

Alejandro Araujo
fonte
1

npm install -g npm@version

no qual você deseja fazer o downgrade

npm install -g [email protected]

Lakshay Sharma
fonte
mas se eu precisar localmente? eu preciso colocar --save?
AlexNikonov 31/05/19
Sim, você também ... baixará o pacote localmente.
Lakshay Sharma
@AlexNikonov omitir o -g(para instalar global, em seguida, ele cair em sua dir projeto atual /node_modules) e sim, --saveou --save-devpara obter uma entrada nopackage.json
Frank Nocke
0

Você pode usar o seguinte comando para instalar uma versão anterior de um pacote npm:

npm install packagename@version
Pinky
fonte
0

Para usuários de fios:

yarn add package_name@version_number
Peter Moses
fonte
-3

No Ubuntu, você pode tentar este comando.

sudo npm cache clean -f
sudo npm install -g n
sudo n stable 

Versão específica: sudo n 8.11.3 em vez de sudo n stable

Deepti Gehlot
fonte