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.

53voto

Long Tran Points 823

Vous pouvez essayer l'une ou l'autre de ces options :

  1. Vérifier les paquets périmés

    npm outdated

    npm outdated

  2. Vérifier et choisir les paquets à mettre à jour

    npx npm-check -u

    npx npm-check -u

36voto

MikeMajara Points 99

Pas de paquets supplémentaires, pour juste vérifier les périmés et mettre à jour ceux qui le sont, cette commande fera l'affaire :

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

27voto

Smit Patel Points 227

Commandes NPM pour mettre à jour ou corriger des vulnérabilités dans certains fichiers manifestes de dépendances

  • Utilisez la commande ci-dessous pour vérifier l'existence de vulnérabilités dans les modules de votre nœud.

    npm audit

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

    npm audit fix

  • Si cela ne fonctionne pas pour vous, essayez alors

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

  • Si vous ne voulez pas utiliser la fonction "force audit fix", vous pouvez corriger manuellement les versions de vos dépendances en les modifiant dans le fichier paquet-lock.json y paquet.json fichier. Ensuite, exécutez

npm update && npm upgrade

8voto

addisonj Points 970

Lors de l'installation de paquets npm (à la fois globalement ou localement), vous pouvez définir une version spécifique en utilisant l'option @version pour définir une version à installer.

En d'autres termes, faire : npm install -g karma@0.9.2 s'assurera 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 globales de npm lorsque vous le pouvez. Beaucoup de gens ne réalisent pas que si une dépendance définit un fichier bin, il est installé dans ./node_modules/.bin/. Souvent, il est très facile d'utiliser cette version locale d'un module installé qui est définie dans votre package.json. En fait, npm scripts ajoutera le ./node_modules/.bin à votre chemin.

À titre d'exemple, voici un package.json qui, lorsque je lance l'application npm install && npm test installera la version de karma définie dans mon package.json, et utilisera cette version de karma (installée dans node_modules/.bin/karma) lors de l'exécution de la commande test script :

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

Cela vous donne l'avantage de définir dans votre package.json la version de karma à utiliser et de ne pas avoir à conserver cette configuration de manière globale sur votre boîte CI.

2 votes

Ce qu'il y a dans le test script ? Pouvez-vous me donner un indice sur la façon dont vous l'installez avec un script.

3 votes

Regardez le package.json. Sous la propriété "scripts", vous pouvez définir une autre propriété, "test" dont la valeur est une commande que vous voulez voir exécutée lorsque vous tapez npm test . la documentation de npm est assez bonne ici : npmjs.org/doc/scripts.html

7voto

adiga Points 16410

A partir de npm@5.0.0+ que vous pouvez simplement faire :

npm update <package name>

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

Vous pouvez toujours obtenir l'ancien comportement en utilisant

npm update --no-save

( Référence )

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