2017-05-19 31 views
6

Pracuję nad pakietem przycisków ui, aby reagować natywnie. Próbuję zbudować przykładowy projekt, aby przetestować ten przycisk. Struktura katalogu jest następujący:React Native: npm link local dependency, nie można rozwiązać modułu

my-button/ 
    package.json 
    index.js 
    example/ 
     package.json 
     index.js 

próbuję użyć npm link:

cd my-button 
npm link 

cd example 
npm link my-button 

W example/node_modules/ widzę mój przyciskami dowiązania, VSCode może również auto kompletne funkcji w pakiecie moja przycisku.

jednak wykonać przykład aplikacja pokaże błąd:

Unable to resolve module my-button ... 
Module does not exist in the module map or in these directories: ... 

Ale ścieżka w komunikacie o błędzie jest poprawna.

Nie wiem, gdzie się myliłem, lub w React-Native masz jakiś specjalny sposób na radzenie sobie z lokalną zależnością łącza?

Próbowałem również npm install file:../.. W ten sposób działa dobrze, ale nie jest łatwo zaktualizować zależność w example/ po tym, jak edytowałem mój przycisk.

+0

Czy skończy się znalezienie rozwiązania tego czy reaguje Native nie obsługuje lokalne pakiety npm? –

Odpowiedz

-1

Zmień swoją package.json

//... 
"dependencies": { 
    //... 
    "my-button" : "file:../" 
    }, 
//... 
+0

Próbowałem już tej metody, w ten sposób skopiuje cały projekt do 'example/node_modules', a nie tylko do dowiązania symbolicznego. Nie jest zbyt wygodne aktualizowanie zależności. –

0

Ran na ten sam problem. Chociaż nie mogłem zrobić npm link działało tak jak powinno, pracowałem wokół niego, instalując pakiet lokalnej w folderze projektu

npm install ../<package-folder> --save 

Będzie to zainstalować pakiet jak zwykły pakiet ale z lokalnego folderu. Wadą jest to, że zmiany wprowadzone w pakiecie nie zostaną odzwierciedlone. Po każdej zmianie będziesz musiał npm install.

1

Komenda npm link nie działa, ponieważ odtwarza pakiet Native packager doesn't support symlinks.

Po krótkich badaniach odkryłem, że są dwa sposoby na to.

  1. Użyj aplikacji haul packager w przykładowej aplikacji. Haul obsługuje dowiązania symboliczne, więc możesz normalnie używać npm link.
  2. Użyj lokalnej zależności przez file:../, a następnie edytuj pliki w folderze node_modules lub przeinstaluj za każdym razem, gdy wprowadzasz zmiany.

znalazłem Haul się doskonale do tego zastosowania przypadku i nawet set-up na little starter project który obejmuje również storybook, co jest naprawdę pomocne, jeśli masz wiele elementów, aby przełączać się pomiędzy.

0

Spróbuj uruchomić

npm run watch 

wewnątrz opakowania przycisku. Obecnie używam tego, aby zastosować zmiany z biblioteki do mojego głównego projektu. Proszę dać mi znać, jeśli to działa!

1

Spróbuj WML (https://github.com/wix/wml)

Jest to alternatywa dla npm link że faktycznie kopiuje zmienione pliki od źródła do folderów docelowych

# add the link to wml using `wml add <src> <dest>` 
wml add ~/my-package ~/main-project/node_modules/my-package 

# start watching all links added 
wml start