913 votes

npm vérifie et met à jour le paquet si nécessaire

Nous devons intégrer Karma test runner dans TeamCity et pour cela j'aimerais donner aux sys-engineers des petits script (powershell ou autre) qui le feraient :

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

  2. vérifier si la version définie de karma runner est installée dans le repo 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érer et installer la bonne version

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

Donc ma vraie question est : "comment vérifier dans un script, si la version désirée du paquet est installée ?". Faut-il faire la vérification, ou est-il prudent d'appeler simplement 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 peuvent devenir incompatibles.

1voto

tres Points 359

Je suis juste intéressé par la mise à jour des paquets périmés en utilisant les règles de versionnement sémantique dans mon système de gestion de l'information. package.json .

Voici une ligne simple qui s'en occupe.

npm update `npm outdated | awk '{print $1}' | tr '\n' ' '`

Ce qu'il fait :

  1. prend la sortie de npm outdated y
  2. le transforme en awk où nous saisissons juste le nom du paquet (dans la colonne 1)
  3. alors nous utilisons tr pour convertir les caractères de nouvelle ligne en espaces
  4. enfin -- en utilisant des backticks -- nous utilisons les résultats des étapes précédentes comme arguments pour npm update afin que nous obtenions toutes les mises à jour nécessaires en une seule fois.

On pourrait penser qu'il y a un moyen de faire cela en utilisant npm mais il n'était pas là quand j'ai regardé, alors je le dépose ici au cas où il serait utile à quelqu'un .

** Je crois qu'il y a une réponse de MikeMajara qui fait quelque chose de similaire, mais elle ajoute @latest au nom du paquet mis à jour, ce qui ne m'intéresse pas vraiment dans le cadre de mes mises à jour régulières.

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