2784 votes

Comment puis-je mettre à jour chaque dépendance dans le paquet.json à la dernière version?

J'ai copié le paquet.json à partir d'un autre projet et que vous voulez la bosse toutes les dépendances à leurs dernières versions puisque c'est un nouveau projet et je n'ai pas l'esprit de fixation quelque chose si elle se casse.

Quelle est la meilleure façon de le faire?

Le meilleur moyen que je connaisse pour l'instant est d'exécuter npm info express version alors package de mise à jour.json manuellement pour chacun. Il doit y avoir une meilleure façon.

{
  "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"
  }
}

Mise à jour: j'ai créé un module npm updatehammer que les mises à jour de toutes les dépendances dans leurs versions les plus récentes et les enregistre dans votre colis.json. Juste npm install -g updatehammer et exécutez updatehammer dans votre dossier de projet. Profitez-en!

3378voto

josh3736 Points 41911

Simplement changer toutes les dépendances de la version d' *, puis exécutez npm update --save.

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

Après:

  "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"
  }

Bien sûr, c'est le blunt marteau de la mise à jour des dépendances. C'est bien si—comme vous l'avez dit—que le projet est vide et que rien ne peut briser.

D'autre part, si vous travaillez dans une plus grande maturité du projet, il est préférable de vérifier qu'il n'y a pas de rupture des changements dans vos dépendances avant la mise à niveau.

Pour voir quels modules sont dépassées, il suffit d'exécuter npm outdated. Il liste tout installé les dépendances qui ont des versions plus récentes disponibles.

1353voto

Etienne Points 1158

npm-check-updates est un utilitaire qui permet de régler automatiquement l'emballage.json avec le version la plus récente de toutes les dépendances

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

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

234voto

laconbass Points 2058

Pour mettre à jour une dépendance à sa dernière version, sans avoir à ouvrir manuellement l' package.json et de le changer, vous pouvez exécuter

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

c'est à dire

npm install express@* --save

Pour référence, npm-installer


PS: moi aussi je déteste avoir à modifier manuellement package.json pour les choses comme ça ;)

78voto

Tobiasz Cudnik Points 2542

Cela fonctionne de la ngp 1.3.15.

"dependencies": {
  "foo": "latest"
}

18voto

andxyz Points 387

J'ai eu récemment mise à jour de plusieurs projets qui ont été à l'aide de mnp et l'emballage.json pour leur gruntfile.js de la magie. La commande bash suivante (plusieurs lignes de commande) a bien fonctionné pour moi:

npm outdated --json --depth=0 | \
jq --ascii-output --monochrome-output '. | keys | .[]' | \
xargs npm install $1 --save-dev

L'idée ici: À la pipe l' npm outdated sortie json, jq
(jq est un json ligne de commande analyseur/outil de requête)
(notez l'utilisation de l' --depth argument pour npm outdated)
jq bande de la sortie vers le bas pour que le haut niveau du nom du package.
enfin xargs met chaque LIBRARYNAME un à un dans un npm install LIBRARYNAME --save-dev commande

Le ci-dessus est ce qui a fonctionné pour moi sur une machine en marche: node=v0.11.10 osx=10.9.2 mnp=1.3.24

cette nécessaire:
xargs http://en.wikipedia.org/wiki/Xargs (natif de ma machine, je crois)
et
jq http://stedolan.github.io/jq/ (je l'ai installé avec brew install jq)

Note: je ne sauvegarde que les bibliothèques mises à jour de package.json à l'intérieur de l'json clé devDependancies par l'aide d' --save-dev, qui a été une exigence de mes projets, tout à fait possible de ne pas le vôtre.

Après, je vérifie que tout est de la sauce avec un simple

npm outdated --depth=0

Aussi, vous pouvez consulter la toplevel installé versions de la bibliothèque avec

npm list --depth=0

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X