web-dev-qa-db-fra.com

Le package lié au lien npm ne se met pas à jour

J'ai deux modules - mon projet principal et une bibliothèque de composants - où je souhaite lier la bibliothèque au projet principal. Les deux travaillent avec WebPack et réagissent. Alors j'ai fait:

Dans comp-lib dir:

lien npm

Dans le répertoire du projet:

npm link comp-lib

Le paquet apparaît dans le dossier node_modules, mais lorsque je travaille sur la bibliothèque de composants, les modifications ne sont pas reflétées dans le projet principal. Qu'est-ce que je manque?

Je ne trouvais pas vraiment quoi que ce soit à propos de ce problème sur Google et le doc link npm ne dit que: "Désormais, toute modification apportée à ~/projects/node-redis sera reflétée dans ~/projects/node-bloggy/node_modules/node-redis /. "

7
SeBe

Eu un problème similaire avec le paquet lié - npm link dep récupérait l'ancienne version de "dep".

Exécuter npm link (à nouveau) dans le dossier "dep" a résolu le problème. Théoriquement, il ne devrait être appelé qu'une seule fois, mais pour certaines raisons, il se désynchronise parfois.

Ainsi, afin de mettre à jour de manière fiable le projet lié, exécutez ces étapes après chaque modification:

  1. Reconstruire le projet lié
  2. exécuter npm link
  3. Dans le projet hôte, exécutez npm link dep
7
Pavel Gurecki

Je ne me souviens pas exactement des problèmes que j'avais et je ne sais pas non plus si tout cela est nécessaire, mais cela fonctionne très bien pour moi.

J'ai ajouté le mini script suivant à la liste de scripts package.json

"scripts": {
  "clean": "if exist dist ( rd /S /Q dist)",
  "updateLink": "npm run clean && tsc && npm rm my-lib -g && npm link"
}

(Remplacez "my-lib" par le nom de votre paquet)

Ensuite, appelez simplement npm run updateLink chaque fois que vous modifiez quelque chose dans la bibliothèque.

Ce qu'il fait:

  • npm run clean supprime le dossier dist. Utile si vous avez renommé des fichiers et que le compilateur typecript ne supprime pas les anciens fichiers mais en crée de nouveaux en parallèle
  • tsc pour compiler ts-> js dans le dossier dist
  • npm rm my-lib -g && npm link pour supprimer votre bibliothèque et la rajouter à partir du dossier des modules globaux. Je ne me souviens pas pourquoi j'ai dû l'enlever d'abord mais cela a résolu un problème, je suppose.
0
andymel

Il est possible que vous ayez modifié la version de votre composant et oublié d’augmenter la version de votre projet principal. Ensuite, toute opération npm téléchargera la version indiquée dans le package-lock.json: version obsolète, supprimant ainsi le lien créé par npm link.

0
etnbrd