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


J'ai copié package.json d'un autre projet et je veux maintenant passer toutes les dépendances à leurs dernières versions car c'est un nouveau projet et ça ne me dérange pas de réparer quelque chose si ça casse.

Quelle est la meilleure façon de faire cela?

La meilleure façon dont je sais maintenant est de courir npm info express version puis mettez à jour package.json manuellement pour chacun d'entre eux. Il doit y avoir un meilleur moyen.

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

Je suis maintenant un collaborateur sur npm-check-updates, ce qui est une excellente solution à ce problème.


1429
2018-04-18 02:39


origine


Réponses:


Ressemble à npm-check-updates est le seul moyen d'y arriver maintenant.

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

Sur npm <3.11:

Changez simplement la version de chaque dépendance en *, puis exécutez npm update --save. (Remarque:  cassé dans les versions récentes (3.11) de npm).

Avant:

  "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 marteau contondant de la mise à jour des dépendances. C'est bien si, comme vous l'avez dit, le projet est vide et que rien ne peut casser.

D'un autre côté, si vous travaillez dans un projet plus mature, vous voudrez probablement vérifier qu'il n'y a pas de changements de rupture dans vos dépendances avant la mise à jour.

Pour voir quels modules sont obsolètes, exécutez simplement npm outdated. Il liste toutes les dépendances installées qui ont des versions plus récentes disponibles.


1689
2018-04-18 03:35



npm-check-updates est un utilitaire qui ajuste automatiquement un package.json avec le dernière version de toutes les dépendances

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

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

863
2018-04-03 21:53



TLDR; (mis à jour pour les versions plus récentes de NPM)

Les choses ont un peu changé depuis que ces réponses ont été écrites à l'origine.

NPM 2+: npm outdated+npm update+npm shrinkwrap

NPM plus ancien: npm-check-updates paquet + npm shrinkwrap

Soyez sûr de rétrécir vos dossiers, ou vous pouvez vous retrouver avec un projet mort. J'ai sorti un projet l'autre jour et il ne fonctionnerait pas parce que mes dossiers étaient tous désuets / mis à jour / un désordre. Si j'avais rétracté, npm aurait installé exactement ce dont j'avais besoin.


Détails

Pour les curieux qui se rendent aussi loin, voici ce que je recommande:

Utilisation npm-check-updates ou npm outdated suggérer les dernières versions.

# `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

Ensuite, faites une installation propre (sans le RM j'ai eu quelques avertissements de dépendance)

$ rm -rf node_modules
$ npm install 

Enfin, enregistrez les versions exactes npm-shrinkwrap.json avec npm shrinkwrap

$ rm npm-shrinkwrap.json
$ npm shrinkwrap

À présent, npm install va maintenant utiliser des versions exactes dans npm-shrinkwrap.json

Si vous vérifiez npm-shrinkwrap.json dans git, toutes les installations utiliseront exactement les mêmes versions.

C'est un moyen de passer du développement (toutes les mises à jour, tout le temps) à la production (personne ne touche rien).


294
2018-06-02 22:29



Mettre à jour un dépendance à sa dernière version sans avoir à ouvrir manuellement le package.json et changez-le, vous pouvez courir

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

c'est à dire.

npm install express@* --save

Pour référence, npm-install


Comme noté par l'utilisateur Vespakoen sur une modification rejetée, il est également possible de mettre à jour plusieurs paquets en même temps:

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

Il apporte également un one-liner pour le shell basé sur npm outdated. Voir l'édition pour le code et l'explication.


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


155
2018-04-30 14:51



Si vous utilisez Code Visual Studio comme votre IDE, c'est une petite extension amusante pour faire la mise à jour package.json un processus en un clic.

Lentille de version

enter image description here


50
2018-03-27 20:00



Cela fonctionne à partir de npm 1.3.15.

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

49
2018-01-21 22:35



  1. Utilisation * comme la version pour les dernières versions, y compris unstable
  2. Utilisation latest comme définition de version pour la dernière version stable
  3. Modifiez le package.json avec le dernier numéro de version stable en utilisant LatestStablePackages

Voici un exemple:

"dependencies": {
        "express": "latest"  // using the latest STABLE version
    ,   "node-gyp": "latest"    
    ,   "jade": "latest"
    ,   "mongoose": "*" // using the newest version, may involve the unstable releases
    ,   "cookie-parser": "latest"
    ,   "express-session": "latest"
    ,   "body-parser": "latest"
    ,   "nodemailer":"latest"
    ,   "validator": "latest"
    ,   "bcrypt": "latest"
    ,   "formidable": "latest"
    ,   "path": "latest"
    ,   "fs-extra": "latest"
    ,   "moment": "latest"
    ,   "express-device": "latest"
},

38
2018-01-23 03:45



Le seul inconvénient que j'ai trouvé avec la meilleure réponse ci-dessus est qu'il met à jour les modules à la dernière version. Cela signifie qu'il pourrait être mis à jour vers une version alpha instable.

J'utiliserais cet utilitaire npm-check-updates. Mon groupe a utilisé cet outil et il a fonctionné efficacement en installant les mises à jour stables.

Comme Etienne l'a indiqué plus haut: installez et exécutez avec ceci:

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

34
2018-02-11 23:37



Pour voir quels paquetages ont des versions plus récentes, utilisez la commande suivante:

npm outdated

mettre à jour juste un dépendance utilisez simplement la commande suivante:

npm install yourPackage@latest --save

Par exemple:

ma package.json le fichier a une dépendance:

"@progress/kendo-angular-dateinputs": "^1.3.1",

alors je devrais écrire:

npm install @progress/kendo-angular-dateinputs@latest --save

24
2017-12-07 07:01



Voici une regex de base pour faire correspondre les numéros de version sémantique afin que vous puissiez les remplacer rapidement par un astérisque.

Version sémantique Regex

([>|<|=|~|^|\s])*?(\d+\.)?(\d+\.)?(\*|\d+)

Comment utiliser

Sélectionnez les versions de package que vous souhaitez remplacer dans le fichier JSON.

screenshot:select the text you want to replace

Entrez l'expression rationnelle ci-dessus et vérifiez qu'elle correspond au texte correct.

screenshot:input the semver regex above

Remplacez toutes les correspondances par un astérisque.

screenshot:replace package versions with an asterisk

Courir npm update --save


21
2018-03-04 15:21



J'aime vraiment comment npm-mise à niveau travaux. C'est un simple utilitaire de ligne de commande qui passe en revue toutes vos dépendances et vous permet de voir la version actuelle par rapport à la dernière version et de la mettre à jour si vous le souhaitez.

Voici une capture d'écran de ce qui se passe après la course npm-upgrade à la racine de votre projet (à côté de la package.json fichier):

npm upgrade example

Pour chaque dépendance, vous pouvez choisir de mettre à niveau, ignorer, afficher le journal des modifications ou terminer le processus. Cela a fonctionné très bien pour moi jusqu'ici.


21
2017-08-22 20:08