2 votes

npm force package-lock pour mettre à jour un paquet en sous-dépendance

En raison d'une vulnérabilité du code, j'essaie de mettre à jour une sous-dépendance. Le paquet est snapdragon J'ai actuellement la version 0.8.2 installée, mais je souhaite passer à la dernière version. 0.12.0 .

J'ai mis à jour tous les paquets qui nécessitent snapdragon en tant que dépendance. Maintenant, d'après le package.json de ces paquets, ils requièrent "^0.8.1" qui devrait notamment soutenir 0.12.0 également.

Voici le résultat de npm ls snapdragon :

 nodemon@1.19.2
  chokidar@2.1.8
    braces@2.3.2
      snapdragon@0.8.2  deduped
 webpack@4.40.2
   micromatch@3.1.10
     extglob@2.0.4
      expand-brackets@2.1.4
       snapdragon@0.8.2  deduped
      snapdragon@0.8.2  deduped
     nanomatch@1.2.13
      snapdragon@0.8.2  deduped
     snapdragon@0.8.2 

J'ai essayé de lancer npm update snapdragon J'ai également essayé un nouveau npm install sans verrouillage du paquet, mais sans succès. Finalement, j'ai décidé d'installer de force snapdraon@0.12.0 mais maintenant il semble que j'ai des dépendances non satisfaites.

 nodemon@1.19.2
  chokidar@2.1.8
    braces@2.3.2
      UNMET DEPENDENCY snapdragon@^0.8.1
 snapdragon@0.12.0 
 webpack@4.40.2
   micromatch@3.1.10
     extglob@2.0.4
      expand-brackets@2.1.4
       UNMET DEPENDENCY snapdragon@^0.8.1
      UNMET DEPENDENCY snapdragon@^0.8.1
     nanomatch@1.2.13
      UNMET DEPENDENCY snapdragon@^0.8.1
     UNMET DEPENDENCY snapdragon@^0.8.1

L'exigence ne devrait-elle pas ^0.8.1 accepter la version 0.12.0 ? Comment puis-je demander à package-lock de mettre à jour le paquet vers la dernière version ?

2voto

Julien Lamarche Points 334

Je ne peux pas répondre à la question du carret, mais sur le sujet de l'en-tête (forcer npm à mettre à jour une sous-dépendance), nous avons eu un problème similaire avec puppeteer > extract-zip > mkdirp > minimist donde minimist présentait une faille de sécurité. Il a été mis à jour, de même que mkdirp mais extract-zip ne l'est pas au moment de la rédaction de ce document.

Utilisation npx npm-force-resolutions dans le cadre de la scripts entrée dans package.json semble avoir résolu (même si ce n'est pas la solution idéale) la vulnérabilité.

$ git diff package.json 
diff --git a/package.json b/package.json
index cf825cf..0d694b3 100644
--- a/package.json
+++ b/package.json
@@ -8,8 +8,13 @@
     "lib": "lib" 
   },
   "scripts": {
+    "preinstall": "npx npm-force-resolutions",
     "test": "echo \"Error: no test specified\" && exit 1" 
   },
+  "resolutions": {
+    "minimist": "1.2.3",
+    "mkdir": "0.5.3" 
+  },

Puis courir npm install :

$ npm install && npm audit

> sge@1.0.0 preinstall /home/jlam/code/prjName
> npx npm-force-resolutions

npx : 5 installé(s) en 5.733s
added 1 package from 1 contributor, removed 1 package and audited 72 packages in 7.212s

[...]

found 0 vulnerabilities
[...]

                       === npm audit security report ===                        

found 0 vulnerabilities
 in 72 scanned packages

0voto

rvakid Points 1

J'ai fait cela et j'obtiens toujours les mêmes erreurs qu'auparavant. Pourquoi ? Je suis très novice en la matière.

a trouvé 1 vulnérabilité de faible gravité dans 352 1 vulnérabilité nécessite un examen manuel. Voir le rapport complet pour plus de détails. web-dev-starter git :(master) npx npm-force-resolutions npx : installé 5 en 1.27s web-dev-starter git :(master) npm install a audité 3522 paquets en 1.712s

2 paquets sont disponibles courir npm fund pour plus de détails

a détecté 1 vulnérabilité de faible gravité exécuter npm audit fix pour les réparer, ou npm audit f web-dev-starter git :(master) npm fund [ ] https://github.com/sponsors/isaacs glob@7. https://github.com/sponsors/ljharb resolve@1.15.1

web-dev-starter git :(master)

Je ne sais pas qui sont ces personnes ou ce hub git. Dois-je adhérer à une association pour obtenir le code ? Qu'est-ce que c'est ?

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