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?
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?
La réinstallation d'un paquet après la suppression du module de nœud fonctionne avec:
yarn install --check-files
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/
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