2017-10-10 2 views
0

J'ai donc forké un paquet dans le git. Fait mes changements. Puis, dans mon terminalWebpack ne peut pas importer le paquet installé à partir de git

npm install --save git+https://github.com/hayk94/ddp.js.git 

Et puis j'essaie d'importer le paquet dans mon code que ce

import DDP from 'ddp.js' 

Mais webpack me donne cette erreur

ERROR in ./main.js 
Module not found: Error: Can't resolve 'ddp.js' in '/Users/hayksafaryan/projects/b2cEmbedLib' 
@ ./main.js 23:11-28 
@ multi (webpack)-dev-server/client?http://localhost:8080 babel-polyfill ./main.js 
webpack: Failed to compile. 

Cependant webpack fonctionne très bien si je installe le paquet à partir de npm. J'importe le paquet comme dans les docs, mais peut-être existe-t-il un autre moyen pour les paquets installés par git?

Répondre

2

Le point d'entrée du package is lib/ddp.js, mais ce fichier n'existe pas dans le référentiel. Il est très fréquent que les bibliothèques construisent leurs bibliothèques avant de les publier sur npm, afin qu'elles puissent utiliser de nouvelles fonctionnalités JavaScript tout en prenant en charge les anciennes versions qui ne les prennent pas en charge. Ceci est fait avec le prepublish hook, qui est automatiquement exécuté avant la publication du paquet (lorsque vous exécutez npm publish). Avec cela, les fichiers construits ne finissent pas dans le référentiel, car il encombre principalement vos commits. Certaines personnes décident de les vérifier afin de pouvoir les utiliser directement à partir de là, ce qui est devenu assez rare parce que ces cas d'utilisation sont généralement couverts par des services comme Unpkg.

Vous avez plusieurs possibilités pour l'utiliser depuis un dépôt git.

  • Archivez les fichiers générés.
  • Construire les fichiers après l'installation. Soit manuellement, soit avec un crochet postinstall. (non recommandé)
  • Modifiez le point d'entrée à src/ddp.js. Si vous devez transpiler les fichiers, ceci n'est pas une option valide, même si vous pouvez théoriquement ajouter le paquet dans votre config webpack, afin qu'il soit transpilé (en supposant que vous excluez node_modules d'être transpilé).
  • Publiez le package sous npm sous votre espace de noms (@yourusername/ddp.js) et utilisez-le. Pour plus de détails, voir Working with scoped packages.