J'ai copié package.json à partir d'un autre projet et je veux maintenant transférer toutes les dépendances vers leurs dernières versions car il s'agit d'un nouveau projet et cela ne me dérange pas de réparer quelque chose s'il se casse.
Quelle est la façon la plus simple de procéder?
La meilleure façon que je sache maintenant est d'exécuter npm info express version
puis de mettre à jour package.json manuellement pour chacun. 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"
}
}
MISE À JOUR 5/1/19 : Six ans plus tard et je maintiens toujours npm-check-updates comme une solution complète à ce problème. Prendre plaisir!
npm outdated | sed '1d; s/ .*/@latest/' | xargs npm i --save
Réponses:
Il semble que npm-check-updates soit le seul moyen d'y arriver maintenant.
Sur npm <3,11:
Changez simplement la version de chaque dépendance en
*
, puis exécuteznpm update --save
. ( Remarque: cassé dans les versions récentes (3.11) de npm ).Avant:
Après:
Bien sûr, c'est le marteau émoussé de la mise à jour des dépendances. C'est bien si - comme vous l'avez dit - le projet est vide et rien ne peut se 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 à niveau.
Pour voir quels modules sont obsolètes, lancez simplement
npm outdated
. Il répertorie toutes les dépendances installées qui ont des versions plus récentes disponibles.la source
*
dans package.json car vous pourriez finir par installer automatiquement une nouvelle version de module avec des changements de rupture qui cassent votre application. Puisque nous utilisons--save
ici, le*
est remplacé par la version actuelle de chaque package.npm install --save
le caractère générique est laissé dans monpackage.json
.update
ne fonctionne pas non plus, pour moi. Je reste avec les jokers. Existe-t-il des documents à ce sujet ou d'autres ressources que je pourrais consulter?npm install -g npm-check-updates
pour installer, puisnpm-check-updates
pour vérifier si vos dépendances ont des misesnpm-check-updates -u
à jour et pour mettre à jour vos versions de package.json. Ensuite, c'est justenpm install
et il téléchargera de nouvelles versions.npm update --save
place denpm update --save-dev
.npm-check-updates
est un utilitaire qui ajuste automatiquement un package.json avec la dernière version de toutes les dépendancesvoir https://www.npmjs.org/package/npm-check-updates
[EDIT] Une façon un peu moins intrusive (évite une installation globale) de faire cela si vous avez une version moderne de
npm
est:la source
ncu -a
, pas également la mise à jour de package.json.Mis à jour pour le dernier NPM
npm 2+ (nœud 0.12+):
Ancien npm (vers 2014):
Assurez-vous de bien emballer vos dépôts, sinon vous risquez de vous retrouver avec un projet mort. J'ai retiré un projet l'autre jour et il ne fonctionnerait pas parce que mes agents étaient tous obsolètes / mis à jour / en désordre. Si j'avais emballé, npm aurait installé exactement ce dont j'avais besoin.
Détails
Pour les curieux qui arrivent jusque-là, voici ce que je recommande:
Utilisez
npm-check-updates
ounpm outdated
pour suggérer les dernières versions.Ensuite, faites une installation propre (sans le rm, j'ai reçu des avertissements de dépendance)
Enfin, enregistrez les versions exactes
npm-shrinkwrap.json
avecnpm shrinkwrap
Maintenant,
npm install
va maintenant utiliser des versions exactes dansnpm-shrinkwrap.json
Si vous vous
npm-shrinkwrap.json
connectez à 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).
npm obsolète
npm-check-updates
film rétractable npm
ps Yarn envoie votre liste de colis à Facebook .
la source
npm-shrinkwrap.json
en source, et que vous vous engagez chaque fois que vous mettez à jour, vous pouvez toujours `` retourner là où vous étiez ''. J'ai ignoré la fonction de film rétractable lorsque j'ai commencé.npm update
ne met à jour que la version semver, pas la dernière.yarn upgrade package@version
?Pour mettre à jour une dépendance vers sa dernière version sans avoir à l'ouvrir manuellement
package.json
et à la modifier, vous pouvez exécuterc'est à dire
Pour référence, npm-install
Comme l'a noté l'utilisateur Vespakoen lors d'une modification refusée, il est également possible de mettre à jour plusieurs packages à la fois de cette façon:
Il ajoute également une doublure pour la coque basée sur
npm outdated
. Voir l'édition pour le code et l'explication.PS: je déteste aussi devoir éditer manuellement
package.json
pour des choses comme ça;)la source
npm install react-native-image-picker@* --save
ncu express mocha chai
. Vous pouvez également exclure des packages avecncu -x mocha
. Je suis d'accord que ce qui précède est la solution la plus simple pour mettre à jour un seul package.npm install {package-name}@latest {save flags}
Si vous utilisez Visual Studio Code comme IDE, il s'agit d'une petite extension amusante pour mettre à jour
package.json
un processus en un clic.Version Lens
la source
Cela fonctionne à partir de npm 1.3.15.
la source
npm shrinkwrap
pour figer les deps."react": "16.9.0"
, puis que j'ajoute la dernière version et que je lancenpm i
, après quoi comment puis-je trouver la version de react qui est maintenant dans mon projet? car"react":"latest"
est ce qui est laissé dans mon package.json, pas un nombre pair après que je l'ai faitnpm i
*
comme version pour les dernières versions, y compris instablelatest
comme définition de version pour la dernière version stableLatestStablePackages
Voici un exemple:
la source
La seule mise en garde que j'ai trouvée avec la meilleure réponse ci-dessus est qu'elle met à jour les modules vers la dernière version. Cela signifie qu'il pourrait passer à 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 dit ci-dessus: installez et exécutez avec ceci:
la source
rm -rf node_modules
avantnpm install
de me débarrasser de certains avertissements de dépendance.Pour voir quels packages ont des versions plus récentes disponibles, utilisez la commande suivante:
pour mettre à jour une seule dépendance, utilisez simplement la commande suivante:
Par exemple:
Mon
package.json
fichier a une dépendance:alors je devrais écrire:
la source
J'aime vraiment le fonctionnement de npm-upgrade . Il s'agit d'un simple utilitaire de ligne de commande qui passe par 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 l'exécution
npm-upgrade
à la racine de votre projet (à côté dupackage.json
fichier):Pour chaque dépendance, vous pouvez choisir de mettre à niveau, d'ignorer, d'afficher le journal des modifications ou de terminer le processus. Jusqu'à présent, cela a très bien fonctionné pour moi.
EDIT: pour être clair, il s'agit d'un package tiers qui doit être installé avant que la commande ne fonctionne. Il ne vient pas avec npm lui-même:
Puis à partir de la racine d'un projet qui a un fichier package.json:
la source
npm-upgrade
ça ne fonctionnait pas pour moi, maisnpm upgrade
ça a mis à jour mon fichier package.json qui était exactement ce que je cherchais.npm-upgrade
est que vous pouvez voir exactement ce qui est mis à niveau et choisir ceux qui sont mis à niveau.npm upgrade
peut fonctionner correctement pour la plupart des gens, mais vous devez parfois avoir un peu plus de contrôle lors de la mise à niveau.npx npm-upgrade
- assez cool! :)Voici une expression rationnelle de base pour faire correspondre les numéros de version sémantiques afin que vous puissiez les remplacer rapidement par un astérisque.
Version sémantique Regex
Comment utiliser
Sélectionnez les versions de package que vous souhaitez remplacer dans le fichier JSON.
Saisissez l'expression régulière ci-dessus et vérifiez qu'elle correspond au texte correct.
Remplacez toutes les correspondances par un astérisque.
Courir
npm update --save
la source
('|")([>|<|=|~|^|\s])*?(\d+\.)?(\d+\.)?(\*|\d+)
:
et appuyerctrl+d
plusieurs fois jusqu'à ce que vous les sélectionniez tous, puis accédez au numéro de version (appuyez deux fois sur la flèche droite) et appuyez sur la touche ctrl, puis écrivez"*"
J'ai récemment dû mettre à jour plusieurs projets qui utilisaient npm et package.json pour leur magie gruntfile.js. La commande bash suivante (commande multiligne) a bien fonctionné pour moi:
L'idée ici: Pour diriger la
npm outdated
sortie en tant que json, versjq
(jq est un analyseur / requête de ligne de commande json)
(notez l'utilisation de l'
--depth
argument pournpm outdated
)jq supprimera la sortie uniquement jusqu'au nom de package de niveau supérieur uniquement.
enfin xargs place chaque LIBRARYNAME un par un dans une
npm install LIBRARYNAME --save-dev
commandeCe qui précède est ce qui a fonctionné pour moi sur une machine en cours d'exécution: node = v0.11.10 osx = 10.9.2 npm = 1.3.24
cela exigeait:
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
)Remarque: Je sauvegarde uniquement les bibliothèques mises à jour dans package.json à l'intérieur de la clé json
devDependancies
en utilisant--save-dev
, c'était une exigence de mes projets, tout à fait possible pas la vôtre.Ensuite je vérifie que tout est sauce avec un simple
En outre, vous pouvez vérifier les versions de bibliothèque installées de niveau supérieur actuelles avec
la source
awk
place:npm outdated --depth=0 | grep -v "^Package" | awk '{print $1}' | xargs npm install $1 --save-dev
cat package.json|jq -r '.devDependencies|keys|map(.+"@latest")|@sh'|xargs npm install --save-dev
Si vous souhaitez utiliser une approche douce via une belle interface de rapport interactive (pour le terminal), je suggère d'utiliser npm-check .
C'est moins un marteau et vous donne une connaissance et un contrôle plus conséquents de vos mises à jour de dépendances.
Pour vous donner un avant-goût de ce qui vous attend, voici une capture d'écran (extraite de la page git pour npm-check):
la source
Cette fonctionnalité a été introduite dans
npm v5
. mise à jour vers npm en utilisantnpm install -g npm@latest
etmettre à jour
package.json
supprimer
/node_modules
etpackage-lock.json (if you have any)
courir
npm update
. cela mettra à jour le package de dépendances.json au plus tard, basé sur semver .pour mettre à jour vers la toute dernière version. tu peux aller avec
npm-check-updates
la source
Si vous utilisez yarn, la commande suivante met à jour tous les packages vers leur dernière version:
yarn upgrade --latest
De leurs documents :
la source
package.json
- github.com/yarnpkg/yarn/issues/4390Depuis la version 5.2.0 de npm, il existe un moyen de l'exécuter sur une seule ligne sans installer de packages supplémentaires dans votre registre npm global ni localement dans votre application. Cela peut être fait en tirant parti du nouvel
npx
utilitaire fourni avec npm. ( Cliquez ici pour en savoir plus. )Exécutez la commande suivante à la racine de votre projet:
la source
npm install
pour télécharger les nouvelles dépendances. Donc je suppose que cela met à jour le package.json à moins que je manque quelque chosenpm install
après la mise à jour des dépendances.J'utilise
npm-check
pour y parvenir.Une autre liste de commandes utile qui gardera les numéros de version exacts dans
package.json
la source
ncu -u
et pasncu -ua
dans l'avant-dernière ligne. Je ne peux pas modifier car un changement de caractère n'est pas autorisé. Très utile d'ailleurs.Updtr!
https://github.com/peerigon/updtr
la source
Les commandes que je devais utiliser pour mettre à jour
package.json
pourNPM 3.10.10
:Contexte:
J'utilisais la dernière commande de @ josh3736 mais ma
package.json
n'a pas été mise à jour. J'ai ensuite remarqué le texte de description lors de l'exécutionnpm-check-updates -u
:En lisant la documentation de npm-check-updates, vous pouvez voir la différence:
https://www.npmjs.com/package/npm-check-updates
ncu est un alias pour
npm-check-updates
comme vu dans le message lors de la frappenpm-check-updates -u
:la source
-a
c'est le comportement par défaut, et le remplacement du package.json est laissé uniquement à l'-u
option.Si vous utilisez
yarn
,yarn upgrade-interactive
est un outil vraiment élégant qui peut vous permettre de visualiser vos dépendances obsolètes, puis de sélectionner celles que vous souhaitez mettre à jour.Plus de raisons d'utiliser Yarn Over
npm
. Il h.la source
package.json
- github.com/yarnpkg/yarn/issues/4390Les commandes ci-dessus ne sont pas sûres car vous risquez de casser votre module lors du changement de version. Au lieu de cela, je recommande ce qui suit
npm shrinkwrap
commande.la source
Essayez la commande suivante si vous utilisez npm 5 et le noeud 8
mise à jour npm - enregistrer
la source
update
commande ne semble pas dépasser les dépendances au-delà de la définition d'origine. Sipackage.json
déclare"1.2.3"
exactement, vous n'obtiendrez pas1.2.4
. Cela peut être bon ou mauvais :)Le code suivant (qui a été accepté) m'a écrit quelque chose comme "ça prend trop de temps" et n'a rien fait. L'utilisation du drapeau global était probablement le problème, idk.
J'ai décidé d'utiliser mon éditeur de texte et de suivre une approche semi-manuelle à la place.
J'ai copié une liste comme celle-ci (juste beaucoup plus longtemps) des dépendances dev de my
package.json
vers l'éditeur de texte notepad ++:J'ai défini le mode de recherche sur l'expression régulière, j'ai utilisé le
^\s*"([^"]+)".*$
modèle pour obtenir le nom du package et l' ai remplacé parnpm uninstall \1 --save-dev \nnpm install \1 --save-dev
. Cliquez sur "remplacer tout". La sortie était la suivante:Je l'ai recopié sur bash et appuyez sur Entrée. Tout a été amélioré et fonctionnait bien. C'est tout.
Je ne pense pas que ce soit un gros problème, car vous ne devez le faire que de temps en temps, mais vous pouvez facilement écrire un script, qui analyse
package.json
et met à niveau vos packages. Je pense que c'est mieux ainsi, car vous pouvez modifier votre liste si vous avez besoin de quelque chose de spécial, par exemple en gardant la version actuelle d'une lib.la source
--packageFile package.json
pour que ne sache pas attendre stdin.J'ai résolu cela en voyant les instructions de https://github.com/tjunnone/npm-check-updates
la source
J'ai trouvé une autre solution pour la version récente de NPM. Ce que je veux faire, c'est remplacer toutes les dépendances "*" par le dernier numéro de version explicite. Aucune des méthodes discutées n'a fonctionné pour moi.
Ce que j'ai fait:
npm-check-updates -u
Tout dans package.json est maintenant mis à jour vers la dernière version.
la source
Si vous ne souhaitez pas installer les mises à jour globales de npm-check, vous pouvez simplement l'exécuter:
la source
L'alternative est
chaque fois que vous utilisez la mise à jour npm, il se met automatiquement à jour vers la dernière version. Pour plus de syntaxe de version, vous pouvez vérifier ici: https://www.npmjs.org/doc/misc/semver.html
la source
Solution sans packages supplémentaires
Changez la version de chaque dépendance en
*
:Ensuite, courez
npm update --save
.Certains de vos packages ont été mis à jour, d'autres non?
Ceci est la partie délicate, cela signifie que votre version locale de "react" était inférieure à la plus récente. Dans ce cas, npm a téléchargé et mis à jour le package "react". Cependant, votre version locale de "react-google-maps" est la même que la plus récente.
Si vous souhaitez toujours "mettre à jour" sans changement
*
, vous devez supprimer ces modules dunode_modules
dossier.par exemple supprimer
node_modules/react-google-maps
.Enfin, exécutez à nouveau
npm update --save
.N'oubliez pas de lancer
npm update --save-dev
si vous souhaitez mettre à jour les dépendances de développement.la source
Greenkeeper si vous utilisez Github. https://greenkeeper.io/
C'est une intégration Github et incroyablement facile à configurer. Une fois installé, il crée automatiquement des demandes d'extraction dans les référentiels que vous spécifiez (ou tous si vous le souhaitez) et maintient votre code toujours à jour, sans vous forcer à faire quoi que ce soit manuellement. Les PR doivent ensuite déclencher une génération sur un service CI et, en fonction d'une vérification réussie ou échouée, vous pouvez continuer à déterminer ce qui déclenche le problème ou quand le CI réussit simplement fusionner le PR.
En bas, vous pouvez voir que la première génération a échoué au début et après une validation ("mise à niveau vers le nœud v6.9"), les tests réussissent afin que je puisse enfin fusionner le PR. Livré avec beaucoup d'emoji aussi.
Une autre alternative serait https://dependencyci.com/ , mais je ne l'ai pas testé intensivement. Après un premier coup d'oeil, Greenkeeper a une meilleure apparence en général à l'OMI et a une meilleure intégration.
la source
Devrait vous obtenir les dernières versions recherchées compatibles pour votre application. Mais pas les dernières versions.
la source