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:
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
)
vérifie si la version définie de karma runner installée dans le dépôt global de npm
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
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
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
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 à:
npm update
pour installer les dernières versions de chaque paquet.Consultez npm-check-updates
pour vous aider avec ce flux de travail.
npm-check-updates
pour répertorier les packages obsolètes (essentiellement la même chose que l'exécution de npm outdated
)npm-check-updates -u
pour mettre à jour toutes les versions de votre package.json (c'est la sauce magique)npm update
comme d'habitude pour installer les nouvelles versions de vos packages sur la base du package.json mis à jour.Il existe également un module "récent" appelé npm-check
:
npm-check
Recherchez les dépendances obsolètes, incorrectes et inutilisées.
Il fournit également un moyen interactif pratique de mettre à jour les dépendances.
Pour mettre à jour un seul package local:
Commencez par trouver vos paquets obsolètes:
npm outdated
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.
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?
Installation d'un package qui vérifie les mises à jour pour vous.
Utilisez ce package pour mettre à jour toutes les versions de package dans votre
package.json
(-a est l'abréviation de --updateAll).Installez toutes les nouvelles versions des packages.
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 '
Vérifier les paquets obsolètes
npm outdated
Vérifier et choisir les paquets à mettre à jour
npx npm-check -u
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.
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)
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
À 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 )