Si vous avez un sous-dépendance qui est trop restrictive dans quelles versions il accepte, vous pouvez les remplacer à l'aide de fils. Il semble que la question d'origine n'était pas tout à fait correcte, mais la question d'origine était en fait celui que je voulais répondu, et j'ai trouvé une réponse, si elle est ici pour la postérité:
Je suis l'aide de la douille.io bibliothèque, et il a component-emitter
comme une dépendance. Mais il a une paire de versions qu'il exige. C'est ce que le fils.fichier de verrouillage ressemblait avant j'ai changé quoi que ce soit:
component-emitter@1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.1.2.tgz#296594f2753daa63996d2af08d15a95116c9aec3"
component-emitter@1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.0.tgz#ccd113a86388d06482d03de3fc7df98526ba8efe"
Il était donc dont deux copies du composant émetteur dans mon code client. J'ai regardé, et il ne semblait pas du tout la rupture des changements entre 1.1.2 et 1.2.0 (ou 1.2.1, qui a été en cours). J'ai d'abord essayé en changeant simplement le fil.fichier de verrouillage:
component-emitter@1.2.1, component-emitter@^1.2.1, component-emitter@1.1.2:
version "1.2.1"
resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
Cela a fonctionné, mais le fichier a des avertissements à ce sujet étant générée automatiquement, ce qui signifie que chaque mise à jour ou un nouveau forfait, je m'ajoutez stomp sur ce changement. Un peu de recherche trouvé l' yarn --flat
option, qui va forcer fils à ne pas choisir plus d'un de chaque colis de l'ensemble du projet. Qui semble exagéré pour moi, car je suis sûr que il y a des cas d'incompatibilité entre les anciens et les nouveaux paquets. Je voulais juste éliminer une redondant package à partir de mon code client, pour rendre le téléchargement plus petits; je veux encore les paquets de développement à tous de travailler correctement.
Mais dans les docs de fil --plat , j'ai trouvé une référence à un "résolutions" bloc qui peut aller dans le paquet.json:
"resolutions": {
"package-a": "2.0.0",
"package-b": "5.0.0",
"package-c": "1.5.2"
}
J'ai donc essayé de mettre "component-emitter" : "1.2.1"
dans un nouveau "résolutions" bloc dans mon colis.json, et il en fait aplati composante de l'émetteur pour 1.2.1 pour tous les endroits qui en ont besoin, et maintenant j'ai qu'une seule copie dans mon code client.
Mise à JOUR EDIT: Fil maintenant, en tant que de 1,0, prend officiellement en charge les "résolutions" bloc ci-dessus. Donc, juste l'utiliser.