web-dev-qa-db-fra.com

npm check et update si nécessaire

Nous devons intégrer Karma Test Runner à TeamCity et pour cela, j'aimerais donner un petit script aux ingénieurs-systèmes (powershell ou autre) qui:

  1. récupère le numéro de version souhaité à partir d'un fichier de configuration (je suppose que je peux le mettre comme un commentaire directement dans le karma.conf.js)

  2. vérifie si la version définie de karma runner installée dans le dépôt global de npm

  3. si ce n'est pas le cas ou si la version installée est plus ancienne que celle souhaitée: récupérez et installez la bonne version

  4. lancez-le: karma start .\Scripts-Tests\karma.conf.js --reporters teamcity --single-run

Donc ma vraie question est: "comment peut-on archiver un script, si la version désirée du paquet est installée?". Devriez-vous faire la vérification ou appeler en toute sécurité npm -g install à chaque fois?

Je ne veux pas toujours vérifier et installer la dernière version disponible, car d'autres valeurs de configuration pourraient devenir incompatibles

371
iLemming

Pour vérifier si l'un des modules d'un projet est "ancien", procédez comme suit:

npm outdated

'obsolète' va vérifier chaque module défini dans package.json et voir s'il existe une version plus récente dans le registre NPM.

Voici un exemple montrant que xml2js (qui se trouve dans node_modules/dans le répertoire en cours) est obsolète, car une version plus récente existe (0.2.7):

[email protected] node_modules/xml2js current=0.2.6

Si vous souhaitez rechercher des modules obsolètes et installer une version plus récente, vous pouvez effectuer les opérations suivantes: npm update (pour tous les modules) ou npm update xml2js (vérifie/met à jour xml2js uniquement)

Jetez un coup d'œil à la documentation du NPM

473
dublx

npm outdated identifiera les packages qui doivent être mis à jour, et npm update <package name> peut être utilisé pour mettre à jour chaque package. Mais npm update <package name> ne mettra pas à jour les versions de votre package.json, ce qui pose problème.

Le meilleur flux de travail consiste à:

  1. Identifier les paquets périmés
  2. Mettez à jour les versions dans votre package.json
  3. Exécutez npm update pour installer les dernières versions de chaque paquet.

Consultez npm-check-updates pour vous aider avec ce flux de travail.

  • Installer npm-check-updates
  • Exécutez npm-check-updates pour répertorier les packages obsolètes (essentiellement la même chose que l'exécution de npm outdated)
  • Exécutez npm-check-updates -u pour mettre à jour toutes les versions de votre package.json (c'est la sauce magique)
  • Exécutez npm update comme d'habitude pour installer les nouvelles versions de vos packages sur la base du package.json mis à jour.
329
Erik Olson

Il existe également un module "récent" appelé npm-check :

npm-check

Recherchez les dépendances obsolètes, incorrectes et inutilisées.

enter image description here

Il fournit également un moyen interactif pratique de mettre à jour les dépendances.

131
alecxe
  • Pour mettre à jour un seul package local:

    1. Commencez par trouver vos paquets obsolètes:

      npm outdated

    2. Puis mettez à jour le ou les paquetages que vous voulez manuellement en tant que:

      npm update --save package_name

De cette façon, il n'est pas nécessaire de mettre à jour votre fichier local package.json.

Notez que cela mettra à jour votre paquet avec la dernière version.

  • Si vous écrivez une version dans votre fichier package.json et faites:

    npm update package_name

    Dans ce cas, vous n'obtiendrez que la prochaine version stable (voulue) concernant la version que vous avez écrite dans votre fichier package.json.

Et avec npm list (package_name), vous pouvez connaître la version actuelle de vos paquets locaux.

66
gugol

Une étape facile:

$ npm i -g npm-check-updates && ncu -u && npm i

C'est tout. Toutes les versions de package dans package.json seront les dernières.

Modifier:

Que se passe-t-il ici?

  1. Installation d'un package qui vérifie les mises à jour pour vous.

  2. Utilisez ce package pour mettre à jour toutes les versions de package dans votre package.json (-a est l'abréviation de --updateAll).

  3. Installez toutes les nouvelles versions des packages.

60
Matt

Commandes NPM permettant de mettre à jour ou de corriger des vulnérabilités dans certains fichiers de manifeste de dépendance

  • Utilisez la commande ci-dessous pour vérifier les vulnérabilités périmées ou obsolètes de vos modules de nœud.

    npm audit

  • Si des vulnérabilités sont trouvées, utilisez la commande ci-dessous pour résoudre tous les problèmes.

    npm audit fix

  • Si cela ne fonctionne pas pour vous alors essayez

    npm audit fix -f, cette commande corrigera presque toutes les vulnérabilités. Certaines dépendances ou devDependencies sont verrouillées dans le fichier package-lock.json, nous utilisons donc le drapeau -f pour forcer leur mise à jour.

  • Si vous ne souhaitez pas utiliser le correctif d'audit forcé, vous pouvez corriger manuellement les versions de vos dépendances en les modifiant dans le fichier package-lock.json et package.json. Puis lancez `npm update && npm upgrade '

10
Smit Patel

Vérifier les paquets obsolètes

npm outdated

Vérifier et choisir les paquets à mettre à jour

npx npm-check -u

npm oudated img

npx npm-check -u img

9
Long Tran

Lors de l'installation de packages npm (globalement ou localement), vous pouvez définir une version spécifique à l'aide de la syntaxe @version pour définir la version à installer.

En d'autres termes, faire: npm install -g [email protected] garantira que seule la version 0.9.2 est installée et ne réinstallera pas si elle existe déjà.

En guise de conseil, je vous suggère d’éviter les installations npm globales chaque fois que vous le pouvez. Beaucoup de gens ne se rendent pas compte que si une dépendance définit un fichier bin, il est installé dans ./node_modules/.bin/. Il est souvent très facile d’utiliser la version locale d’un module installé défini dans votre package.json. En fait, les scripts npm ajouteront le ./node_modules/.bin sur votre chemin.

Par exemple, voici un package.json qui, lorsque je lance npm install && npm test, installera la version de karma définie dans mon package.json, et utilisera cette version de karma (installée à node_modules/.bin/karma) lorsque exécuter le script test:

{
 "name": "myApp",
 "main": "app.js",
 "scripts": {
   "test": "karma test/*",
 },
 "dependencies": {...},
 "devDependencies": {
   "karma": "0.9.2"
 }
}

Cela vous donne l’avantage de votre package.json de définir la version de karma à utiliser et de ne pas devoir conserver cette configuration globalement sur votre CI.

5
addisonj

Pas de paquet supplémentaire, juste pour vérifier les éléments obsolètes et mettre à jour ceux qui sont, cette commande fera:

npm install $(npm outdated | cut -d' ' -f 1 | xargs -I '$' echo '$@latest' | xargs echo)

4
MikeMajara

Pour mettre réellement à jour un seul paquet, installez NCU et exécutez-le uniquement pour ce paquet. Cela passera au dernier dernier.

npm install -g npm-check-updates

ncu -f your-intended-package-name -u
1
regisbsb

À partir de [email protected] + , vous pouvez simplement faire:

npm update <package name>

Ceci mettra automatiquement à jour le fichier package.json. Il n'est pas nécessaire de mettre à jour manuellement la dernière version, puis d'utiliser npm update <package name>

Vous pouvez toujours obtenir l'ancien comportement en utilisant

npm update --no-save

( Référence )

1
adiga