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 /. "
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:
npm link
npm link dep
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:
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
.