Je voudrais utiliser le grunt-contrib-jasmine
package NPM. Il a différentes dépendances. Une partie du graphique des dépendances ressemble à ceci:
─┬ grunt-contrib-jasmine@0.4.1
│ ├─┬ grunt-lib-phantomjs@0.2.0
│ │ ├─┬ phantomjs@1.8.2-2
Malheureusement, il y a un bogue dans cette version phantomjs
qui l'empêche de s'installer correctement sur Mac OS X. Il est corrigé dans la dernière version.
Comment puis-je grunt-lib-phantomjs
utiliser une version plus récente de phantomjs
?
Un contexte supplémentaire:
grunt-contrib-jasmine
requiert explicitement la version"~0.2.0"
degrunt-lib-phantomjs
, qui requiert explicitement la version"~1.8.1"
dephantomjs
.- L'ajout
phantomjs
aux dépendances de mon package n'a tout d'abord aucun effet; les deux versions sont installées etgrunt-contrib-jasmine
utilisent toujours les anciennes versions (voir: Lors de l'installation d'un package avec NPM, pouvez-vous lui dire d'utiliser une version différente de l'une de ses dépendances? ).
git clone
ou fourchez le module requis. Vous pouvez également supprimerphantomjs
manuellement l' imbrication .grunt-contrib-jasmine
est sur 0.5.1, qui utilise[email protected]
, qui utilise[email protected]
:)Réponses:
Vous pouvez utiliser la fonctionnalité de rétrécissement npm , afin de remplacer toute dépendance ou sous-dépendance.
Je viens de le faire dans un de nos plus gros projets. Nous avions besoin d'une version plus récente de connect, depuis 2.7.3. nous causait des problèmes. J'ai donc créé un fichier nommé npm-shrinkwrap.json:
npm devrait le récupérer automatiquement lors de l'installation du projet.
(Voir: https://nodejs.org/en/blog/npm/managing-node-js-dependencies-with-shrinkwrap/ )
la source
grunt-contrib-connect
dépendance et ses enfants sont installés. Toutes mes autres dépendances dans package.json ne sont pas installées.node_modules
répertoire pour que le vidage de dépendance de film rétractable soit exactement ce que je voulais, pas seulement des remplacements. Mais toujours une sorte de solution douloureuse.node_modules
, l'exécution d'une installation avec un emballage minimal semble laisserdevDependencies
intacte bien qu'elle soit ignoréedependencies
, mais l'exécution d'une autre installation supprime les éléments non explicites, il est donc important pour l'instant de s'exécuternpm shrinkwrap
pour obtenir un fichier complet, de modifier la partie en question, et puis exécutez ànpm install
nouveau)Pour ceux de 2018 et au-delà, en utilisant npm version 5 ou ultérieure: éditez votre
package-lock.json
: supprimez la bibliothèque de la"requires"
section et ajoutez-la sous "dépendances".Par exemple, vous souhaitez que le
deglob
package utilise laglob
version du package3.2.11
au lieu de sa version actuelle. Vous ouvrezpackage-lock.json
et voyez:Supprimer
"glob": "7.1.2",
de"requires"
, ajouter"dependencies"
avec la version appropriée:Maintenant, supprimez votre
node_modules
dossier, exécuteznpm install
et il ajoutera des parties manquantes à la"dependencies"
section.la source
npm install
s'exécute une seule fois. Dans mon cas, les modifications sont nécessaires car le dépôt imbriqué provoque un échec.npm i
au lieu de modifier votre package-lock.json et d'ajouter la dépendance enfant aux "dépendances", ajoutez la dépendance enfant à votre section "dépendances" de package.jsonnpm install
nouveau, toutes les modificationspackage-lock.json
sont annulées et je récupère la mauvaise version du dep.npm ci
et cela ne touche pas lepackage-lock.json
Pour ceux qui utilisent du fil.
J'ai essayé d'utiliser npm shrinkwrap jusqu'à ce que je découvre que le fil cli a ignoré mon fichier npm-shrinkwrap.json.
Yarn a https://yarnpkg.com/lang/en/docs/selective-version-resolutions/ pour cela. Soigné.
Découvrez également cette réponse: https://stackoverflow.com/a/41082766/3051080
la source
J'ai eu un problème où l'une des dépendances imbriquées avait une vulnérabilité d'audit npm, mais je voulais toujours conserver la version de la dépendance parent. la solution npm shrinkwrap n'a pas fonctionné pour moi, donc ce que j'ai fait pour remplacer la version de dépendance imbriquée:
la source
Le film rétractable NPM offre une bonne solution à ce problème. Cela nous permet de remplacer cette version d'une dépendance particulière d'un sous-module particulier.
Essentiellement, lorsque vous exécutez l'installation de npm, npm recherchera d'abord dans votre répertoire racine pour voir s'il existe un fichier npm-shrinkwrap.json. Si tel est le cas, il l'utilisera d'abord pour déterminer les dépendances des packages, puis reviendra au processus normal de traitement des fichiers package.json.
Pour créer un npm-shrinkwrap.json, tout ce que vous devez faire est
code:
la source
J'ai trouvé une solution qui a fonctionné pour moi.
Alors. Modifiez d'abord votre fichier npm-shrinkwrap.json comme recommandé pour toutes les autres solutions.
Ensuite, (sous Windows):
Les autres solutions proposées sont suffisantes si vous effectuez l'opération «npm install» une seule fois. Mais après la première 'installation de npm', le fichier 'npm-shrinkwrap.json' est à nouveau modifié comme avant votre modification.
la source