¿Cómo instalar una versión exacta anterior de un paquete NPM?

917

Usé nvm para descargar el nodo v0.4.10 e instalé npm para trabajar con esa versión del nodo.

Estoy tratando de instalar express usando

npm install express -g

y recibo un error que expresa requiere la versión del nodo> = 0.5.0.

Bueno, esto es extraño, ya que estoy siguiendo las instrucciones para un tutorial de nodo + express + mongodb aquí que usaba el nodo v0.4.10, por lo que supongo que express está / estaba disponible para el nodo v0.4.10. Si mi suposición es correcta, ¿cómo le digo a npm que busque una versión que funcione con mi configuración?

stewart99
fuente
77
¿Por qué no solo actualizas tu versión de Node? Estoy bastante seguro de que debería haber muchas más adiciones buenas que un comportamiento roto que encontrarás.
Fabrício Matté
1
A veces esa no es una opción. Si usó nvm para degradar, podría haber una razón, tal como algún otro grupo controla la versión del nodo ejecutable que tiene que usar.
fool4jesus

Respuestas:

1584

Si tiene que instalar una versión anterior de un paquete, solo especifíquelo

npm install <package>@<version>

Por ejemplo: npm install [email protected]

También puede agregar el --saveindicador a ese comando para agregarlo a sus dependencias package.json, o--save --save-exact indicadores si desea que se especifique la versión exacta en sus dependencias package.json.

El installcomando se documenta aquí: https://docs.npmjs.com/cli/install

Si no está seguro de qué versiones de un paquete están disponibles, puede usar:

npm view <package> versions

Y también npm viewse puede usar para ver otras cosas sobre un paquete. https://docs.npmjs.com/cli/view

Bret Copeland
fuente
44
Creo que esto instalará la versión principal más cercana que coincida, por lo que podría no ser lo que espera stackoverflow.com/a/22345808/1074400
Aakil Fernandes
2
@AakilFernandes si especifica una versión exacta, se instalará una versión exacta. Si especifica un rango de versión semántica, es posible que obtenga una coincidencia no exacta. No hay nada único sobre el comando de instalación a ese respecto.
Bret Copeland
66
npm view <package> versions -jsonpara ver todas las versiones, evitando los puntos suspensivos al final de una lista con muchas versiones.
TheDarkIn1978
55
Si lo usa npm install [email protected], no obtendrá la versión exacta 3.0.0, obtendrá la última versión 3.xx. Para obtener la versión específica, tienes que usar npm install [email protected] --save-exact. Vea esta publicación de blog: 60devs.com/npm-install-specific-version.html
Patrick Hund
55
@PatrickHund no, npm install [email protected]obtendrá exactamente la versión 3.0.0. npm install express@^3.0.0obtendría la última versión 3.xx --save-exactafecta la forma en que está escrita en packages.json, que ya cubrí en mi respuesta. También tenga en --save-exactcuenta que debe usarse en combinación con uno --saveo --save-dev- no es suficiente usarlo solo.
Bret Copeland el
94

Es muy facil. Solo escribe esto, por ejemplo:

npm install -g npm@4.6.1

O:

npm install -g npm@latest    // For the last stable version
npm install -g npm@next      // For the most recent release
inaps
fuente
1
Gracias por las latesty nextversión etiquetas!
Jimmy Adaro
@inaps puede agregar una nota de que el -gindicador es específicamente para los paquetes que desea instalar globalmente, ya que muchos usuarios accederán a esta página y simplemente copiarán / pegarán sin darse cuenta de cómo están a punto de afectar su ecosistema de paquetes. Todos hemos sido "ese tipo"
Jacksonkr
73

Primero elimine la versión anterior, luego ejecute literalmente lo siguiente:

npm install express@3.X

y para estable o reciente

npm install -g npm@latest    // For the last stable version
npm install -g npm@next      // For the most recent release
Saurabh Chandra Patel
fuente
12
¿Es eso un literal Xo un sustituto para algún número de versión numérico?
Keith Thompson el
77
Esa fue una pregunta de uno o dos, no una pregunta de sí / no. Lo intenté npm install [email protected]y pareció funcionar. ¿Es eso una característica o un accidente de la forma en que npmanaliza el número de versión?
Keith Thompson el
3
@KeithThompson Sí, lo es! Jeje, es broma ... Es la forma en que lo npmanaliza, ver: docs.npmjs.com/misc/semver#x-ranges-12x-1x-12-
gonz
3
@gonz: Entonces es un literal X.
Keith Thompson
1
Solo quería abordar por qué eso funcionó para ti. No sé la intención original de Saurabh o lo que estás tratando de hacer. 3.X significaría> = 3.0 y <4.0.
gonz
41

En mi opinión, esa es la forma más fácil y rápida:

$ npm -v

4.2.0

$ npm install -g npm@latest-3

...

$ npm -v

3.10.10

Oleg Bezkorovaynyi
fuente
2

puedes actualizar tu paquete npm usando este comando:

npm install <package_name>@<version_number>

ejemplo: npm install [email protected]

Mehedi Abdullah
fuente
1

Tengo una forma general de resolver este tipo de problemas, que también podría ser útil, especialmente al clonar repositorios para ejecutarlos localmente, pero requiere un poco más de análisis de las versiones.

Con el paquete npm-check-updatesverifico las versiones de los paquetes (de acuerdo con el archivo package.json) que no están declaradas en sus últimas versiones disponibles, como se muestra en la figura ( https://www.npmjs.com/package/npm-check -actualizaciones ):

ingrese la descripción de la imagen aquí

Con esta información podemos verificar el estado de actualización de los diferentes paquetes y tomar decisiones sobre qué paquetes actualizar / degradar y cuáles no.

Suponiendo que decidimos actualizar todos los paquetes tal como están listados, podemos usar el ncu -ucomando que solo modifica su archivo package.json. corrernpm install para actualizar sus paquetes instalados y package-lock.json.

Luego, dependiendo de los requisitos del repositorio, podemos refinar lo que se necesita, instalando las versiones específicas con npm view <package> versionsy npm install <package>@<version>

Alejandro Araujo
fuente
1

npm install -g npm@version

en el que quieres rebajar

npm install -g [email protected]

Lakshay Sharma
fuente
pero si lo necesito localmente? ¿Necesito poner --save?
AlexNikonov
Sí, usted también ... descargará el paquete localmente.
Lakshay Sharma
@AlexNikonov omite -g(para la instalación global, luego aterriza en el directorio de su proyecto actual /node_modules) y sí, --saveo --save-devpara obtener una entradapackage.json
Frank Nocke
0

Puede usar el siguiente comando para instalar una versión anterior de un paquete npm:

npm install packagename@version
Meñique
fuente
0

Para usuarios de hilo:

yarn add package_name@version_number
Peter Moses
fuente
-3

En Ubuntu puedes probar este comando.

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

Versión específica: sudo n 8.11.3 en lugar de sudo n estable

Deepti Gehlot
fuente