¿Cómo puedo cambiar la versión de npm usando nvm?


He estado usando NVM para instalar las últimas versiones de NodeJS para mi trabajo de nodo. Funciona totalmente bien para instalar versiones separadas y cambiar entre ellas. También instala la última versión de NPM dentro de cada local ...carpeta / bin junto con el nodo binario. Sin embargo, no parece haber ninguna manera de cambiar la versión de NPM que estoy usando (o al menos no puedo entenderlo).

La única solución que se me ocurre es eliminar el binario al que está incumpliendo (que es el NPM que se instaló cuando instalé por primera vez el nodo con NVM), y en su lugar para poner el último binario NPM. Sin embargo, me pregunto si hay mejores maneras de hacer esto.

 146
Author: bdesham, 2012-03-18

10 answers

Más de tres años después de que esta pregunta se hiciera por primera vez, parece que la respuesta es mucho más simple ahora. Simplemente actualice la versión que nvm instaló, que vive en ~/.nvm/versions/node/[your-version]/lib/node_modules/npm.

Acabo de instalar el nodo 4.2.2, que viene con npm 2.14.7, pero quiero usar npm 3. Así que lo hice:

cd ~/.nvm/versions/node/v4.2.2/lib
npm install npm

Fácil!

Y sí, esto debería funcionar para cualquier módulo, no solo npm, que desee ser "global" para una versión específica de node.


EDITAR 1: En la versión más reciente, npm -g es inteligente y instala módulos en la ruta anterior en lugar de la ruta global del sistema.


EDITAR 2, otros dos años y seis versiones de nodo más tarde: como se indica en una respuesta más nueva , ahora hay un comando para esto:

Nvm ahora tiene un comando para actualizar npm. Es nvm install-latest-npm o npm install --latest-npm.

Gracias philraj por señalar esto en un comentario.

 224
Author: lawrence,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-24 16:46:43

Nvm no maneja npm.

Así que si desea instalar el nodo 0.4.x (de la que aún dependen muchos paquetes) y usa NPM, aún puede usar npm 1.0.x.

Instalar nodo 0.6.x (que viene con npm 1.1.x) e instalar nvm con npm:

npm install nvm
. ~/nvm/nvm.sh

Instalar nodo 0.4.x con nvm:

nvm install v0.4.12
nvm use v0.4.12

Instalar npm usando install.sh (tenga en cuenta el -L param para seguir cualquier redireccionamiento):

curl -L https://npmjs.org/install.sh | sh

Esto detectará el nodo 0.4.12 e instalará npm 1.0.106 en su ~/nvm/v0.4.12/lib/node_modules carpeta y crear enlace simbólico para nvm

~/nvm/v0.4.12/bin/npm -> ../lib/node_modules/npm/bin/npm-cli.js

Si intenta ejecutar npm, todavía dará un error, pero si lo hace nvm use v0.4.12 de nuevo, ahora debería funcionar.

 38
Author: fijiaaron,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-15 22:16:40

Cambiar las versiones de npm en OSs basados en Linux no es un proceso sencillo de un comando todavía. He hecho lo siguiente para volver a la versión anterior de npm. Esto debería funcionar para que cualquier versión de npm funcione. Primero instale la versión de npm que desea utilizar:

sudo npm install -g [email protected]

Elimina el enlace sym en / usr / local / bin /

sudo rm /usr/local/bin/npm

Vuelva a crear el enlace sym utilizando la versión deseada de npm que haya instalado

sudo ln -s /usr/bin/[email protected] /usr/local/bin/npm
 16
Author: Arun Reddy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-13 01:58:41

Nvm ahora tiene un comando para actualizar npm. Es nvm install-latest-npm o npm install --latest-npm.

 15
Author: samlandfried,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-09 16:55:51
npm install [email protected] -g
npm install [email protected] -g
 14
Author: Ocko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-05 20:53:40

Mirando www.npmjs.com/install.sh Encontré que hay una manera de instalar una versión específica estableciendo una variable de entorno

export npm_install="2.14.14"

Luego ejecute el script de descarga como se describe en npmjs.com :

curl -L https://www.npmjs.com/install.sh | sh

Si omite establecer la variable npm_install, entonces instalará la versión que han marcado como última

 8
Author: jim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-07 10:54:42

En Windows, ejecute su terminal como administrador (en caso de que haya problemas de permisos como yo). Luego use una versión de nodo específica (digamos 7.8.0) por

nvm use 7.8.0

Luego actualice su npm a la versión específica deseada por

npm install -g [email protected]
 4
Author: adnan2nd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-12 06:01:17

Estoy en Windows y no pude conseguir nada de esto para trabajar. Seguía recibiendo errores sobre los archivos que estaban en el camino. Esto funcionó sin embargo:

cd %APPDATA%\nvm\v8.10.0           # or whatever version you're using
mv npm npm-old
mv npm.cmd npm-old.cmd
cd node_modules\
mv npm npm-old
cd npm-old\bin
node npm-cli.js i -g npm@latest

Y boom, estoy de vuelta en el negocio.

 3
Author: Ryan Shillington,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-09 13:40:44

Una ligera variación en las instrucciones anteriores, funcionó para mí. (macOS Sierra 10.12.6)

npm install -g [email protected]
rm /usr/local/bin/npm
ln -s ~/.npm-packages/bin/npm /usr/local/bin/npm
npm --version
 1
Author: Nick Grealy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-28 05:16:09

¿Qué pasa con npm i -g npm? ¿Intentaste hacer esto también?

 0
Author: Dimitri Reifschneider,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-30 16:32:33