¿Cómo actualizo cada dependencia en el paquete.json a la última versión

node.js npm


Copié el paquete.json de otro proyecto y ahora quiero pasar todas las dependencias a sus últimas versiones ya que este es un proyecto nuevo y no me importa arreglar algo si se rompe.

¿Cuál es la forma más fácil de hacer esto?

La mejor manera que conozco ahora es ejecutar la npm info express version luego actualizar package.json manualmente para cada una. Debe haber una mejor manera.

{
  "name": "myproject",
  "description": "my node project",
  "version": "1.0.0",
  "engines": {
    "node": "0.8.4",
    "npm": "1.1.65"
  },
  "private": true,
  "dependencies": {
    "express": "~3.0.3", // how do I get these bumped to latest?
    "mongodb": "~1.2.5",
    "underscore": "~1.4.2",
    "rjs": "~2.9.0",
    "jade": "~0.27.2",
    "async": "~0.1.22"
  }
}

ACTUALIZACIÓN 1/5/19 : Seis años después y todavía mantengo npm-check-updates como una solución integral a este problema. ¡Disfrutar!




Answer 1 josh3736


Parece que npm-check-updates es la única forma de hacer que esto suceda ahora.

npm i -g npm-check-updates
ncu -u
npm install

En npm <3.11:

Simplemente cambie la versión de cada dependencia a * , luego ejecute npm update --save . ( Nota: roto en versiones recientes (3.11) de npm ).

Before:

  "dependencies": {
    "express": "*",
    "mongodb": "*",
    "underscore": "*",
    "rjs": "*",
    "jade": "*",
    "async": "*"
  }

After:

  "dependencies": {
    "express": "~3.2.0",
    "mongodb": "~1.2.14",
    "underscore": "~1.4.4",
    "rjs": "~2.10.0",
    "jade": "~0.29.0",
    "async": "~0.2.7"
  }

Por supuesto, este es el martillo contundente de actualizar las dependencias. Está bien si, como dijiste, el proyecto está vacío y nada puede romperse.

Por otro lado,si estás trabajando en un proyecto más maduro,probablemente quieras verificar que no hay cambios de ruptura en tus dependencias antes de actualizar.

Para ver qué módulos están desactualizados, simplemente ejecute npm outdated . Enumerará todas las dependencias instaladas que tengan versiones más nuevas disponibles.




Answer 2 Etienne


npm-check-updates es una utilidad que ajusta automáticamente un package.json con la última versión de todas las dependencias

ver https://www.npmjs.org/package/npm-check-updates

$ npm install -g npm-check-updates
$ ncu -u
$ npm install 

[EDITAR] Una forma un poco menos intrusiva (evita una instalación global) de hacer esto si tienes una versión moderna de npm es:

$ npx npm-check-updates -u
$ npm install 



Answer 3 Michael Cole


Actualizado para el último NPM

npm 2+(Nodo 0.12+):


npm outdated
npm update
git commit package-lock.json

Antiguo npm (circa 2014):

npm install -g npm-check-updates
npm-check-updates
npm shrinkwrap
git commit package-lock.json

Asegúrate de encoger tus deps,o puedes terminar con un proyecto muerto.Saqué un proyecto el otro día y no funcionó porque mis deps estaban todos desactualizados/actualizados/un desastre.Si hubiera envuelto,NPM habría instalado exactamente lo que necesitaba.


Details

Para los curiosos que lleguen hasta aquí,esto es lo que recomiendo:

Use npm-check-updates o npm outdated para sugerir las últimas versiones.

# `outdated` is part of newer npm versions (2+)
$ npm outdated
# If you agree, update.  
$ npm update

#       OR

# Install and use the `npm-check-updates` package.
$ npm install -g npm-check-updates
# Then check your project
$ npm-check-updates
# If you agree, update package.json.
$ npm-check-updates -u

Entonces haz una instalación limpia (sin el rm tengo algunas advertencias de dependencia)

$ rm -rf node_modules
$ npm install 

Por último, guarde versiones exactas en npm-shrinkwrap.json con npm shrinkwrap

$ rm npm-shrinkwrap.json
$ npm shrinkwrap

Ahora, npm install ahora usará versiones exactas en npm-shrinkwrap.json

Si npm-shrinkwrap.json en git, todas las instalaciones utilizarán exactamente las mismas versiones.

Es una forma de pasar del desarrollo (todas las actualizaciones,todo el tiempo)a la producción (nadie toca nada).

ps Yarn está enviando su lista de paquetes a Facebook .




Answer 4 laconbass


Para actualizar una dependencia a su última versión sin tener que abrir manualmente package.json y cambiarlo, puede ejecutar

npm install {package-name}@* {save flags?}

i.e.

npm install express@* --save

Como referencia, npm-install


Como señaló el usuario Vespakoen en una edición rechazada, también es posible actualizar varios paquetes a la vez de esta manera:

npm install --save package-nave@* other-package@* whatever-thing@*

También admite una línea para el shell basado en npm outdated . Vea la edición para el código y la explicación.


PD: también odio tener que editar manualmente package.json para cosas así;)




Answer 5 GollyJer


Si está utilizando Visual Studio Code como su IDE, esta es una pequeña extensión divertida para hacer que la actualización de package.json sea un proceso de un solo clic.

Lente de versión

enter image description here