web-dev-qa-db-fra.com

Comment forcer Yarn à réinstaller un paquet?

Mon projet a une dépendance que je reçois parfois d'un serveur de paquets et parfois d'une copie locale que j'ai sur ma machine. En conséquence, j'ai souvent besoin d'un commutateur Yarn qui recherche la dépendance. De plus, je change souvent la copie locale de la dépendance et je souhaite que ce changement soit reflété dans mon projet principal. Par conséquent, j'ai besoin d'un moyen d'indiquer à Yarn de continuer à rechercher le même emplacement pour la dépendance, mais de réinstaller la dépendance, en ignorant le cache et en le récupérant directement à partir de sa source actuelle, même si le numéro de version n'a pas changé. (Parfois, je veux essayer de petites modifications de la dépendance, et mettre à jour le numéro de version à chaque fois deviendrait rapidement ennuyeux.)

Comment je le fais?

J'ai essayé les solutions suivantes, mais aucune d'entre elles ne fonctionne:

yarn remove dependency
yarn add file:/dependency

Continue à utiliser la version précédente de la dépendance.

yarn remove dependency
yarn cache clear
yarn add file:/dependency
yarn install --force

Continue également à utiliser la version précédente de la dépendance.

yarn remove dependency
rm -rf node_modules/
yarn cache clear
yarn add file:/dependency
yarn install --force

Continue toujours à utiliser la version précédente de la dépendance.

Comment puis-je m'assurer que Yarn utilise la dernière version de ma dépendance?

31
Kevin

Vous pouvez utiliser le yarn link commande . Cela va configurer votre dépendance locale afin que chaque fois que vous apportez une modification à la dépendance, elle apparaisse immédiatement dans votre projet principal sans que vous ayez à faire autre chose pour la mettre à jour.

Si votre projet principal est en ~/programming/main et votre dépendance est en ~/programming/dependency et s'appelle MyLocalDependency, vous voudrez:

1) Run yarn link (sans indicateur supplémentaire) depuis votre dépendance:

cd ~/programming/dependency
yarn link

2) Run yarn link <name of dependency package> depuis votre projet principal:

cd ~/programming/main
yarn link MyLocalDependency

Et tu as fini!

Si vous souhaitez passer d'une copie locale de la dépendance à une autre hébergée ailleurs, vous pouvez utiliser yarn unlink _ .

cd ~/programming/main
yarn unlink MyLocalDependency
cd ~/programming/dependency
yarn unlink

Si vous utilisez NPM au lieu de Yarn, npm link et npm link <dependency> fonctionnent de la même manière. Pour dissocier la dépendance, exécutez npm rm --global <dependency>. (Ceci est dû au fait npm link fonctionne en créant un lien symbolique dans l'ensemble de packages NPM global, ainsi la désinstallation de la dépendance liée des packages globaux rompt également le lien.)

Voir le npm link documentation et Comment désinstaller un paquet installé à l’aide du lien npm?

20
Kevin

La réinstallation d'un paquet après la suppression du module de nœud fonctionne avec:

yarn install --check-files

63
Karl Adler

Il y a un autre moyen. Il suffit d'utiliser yarn upgrade package-name

Voir le manuel: https://yarnpkg.com/lang/en/docs/cli/upgrade/

7
Sergey Okatov

Comme Kevin a répondu lui-même , yarn link est une bonne option.
Mais cela peut poser des problèmes si le paquet que vous liez a des dépendances homologues .

Qu'est-ce que dit Karl Adler , c'est aussi un chemin à parcourir:

yarn --check-files

Mais cela réinstallera (yarn sans sous-commande est identique à yarn install) chaque paquet qui a changé.

Donc, si vous voulez vraiment réinstaller un paquet:

yarn add package-name --force
3
seelts