2015-05-05 9 views
5

jestem putting together a streamlined development process z zareagować i reagować-rodzimy że:Jak umieścić na czarnej liście określone moduły node_modules zależności mojego pakietu w pakowniku typu native-native?

  • zachęca pakietów,
  • wykorzystuje Babel przekształcić es6 do js (kompiluje przed publikacją/montaż),
  • ma placu zabaw, które pozwalają na grasz zarówno z native, jak iz siecią components.

Część internetowa jest idealnie cienka. To rodzimy problem powoduje problemy i ma związek z aplikatorem typu native-native.

Najważniejsze jest to: jeśli pakiet jest albo połączony poprzez npm link lub wymagane bezpośrednio z placu zabaw jak w require('../../') reagować rodzimymi w zależności rezolwerem pójdzie zawsze starają się zidentyfikować zależności wewnątrz, większość czasu moja przesyłka za node_modules nigdy nie kończy się robi .

Tymczasowe rozwiązanie, które znalazłem, to zainstalowanie pakietu na placu zabaw, ale wymaga to jego ponownej instalacji za każdym razem, gdy robię aktualizację, co nie jest wspaniałe, ponieważ od razu nie widać zmian (nawet jeśli byłby zautomatyzowany, zajęłoby to trochę czasu).

Uważam, że lepszym rozwiązaniem byłoby poproszenie, aby narzędzie do rozwiązywania zależności ignorowało te konkretne moduły, których nie potrzebuję (głównie te w wersji devDependencies!). Próbowałem mieszać react-native/packager/blacklist.js, dodając ścieżki do tej listy, a nawet wprowadzając kontrole przeciwko dependency resolver, ale nic z tego nie zadziała.

Czy osoba z większym doświadczeniem w pakiecie może mi wskazać, w jaki sposób powinienem przejść przez procedurę rozwiązywania zależności? Ewentualnie byłoby wspaniale, gdyby pakowacz mógł zostać rozdzielony, a proces transformacji pozostawiony do wyboru, ale nie wiem, czy byłby to wykonalny.

Odpowiedz

9

dowiedziałem się następujące rozwiązanie, oparte na komentarz w default.config.js:

* If you need to override any of this functions do so by defining the file 
* `rn-cli.config.js` on the root of your project with the functions you need 
* to tweak. 

Utwórz rn-cli.config.js w katalogu głównym projektu z następujących treści:

var blacklist = require('react-native/packager/blacklist'); 

var config = { 
    getBlacklistRE(platform) { 
    return blacklist([ 
     /node_modules\/my-package\/excluded-dir\/.*/ 
    ]); 
    } 
}; 

module.exports = config; 

Drugi argument funkcja blacklist jest dodatkową listą ścieżek umieszczonych na czarnej liście, które mogą być wyrażeniami regularnymi. Więcej przykładów można znaleźć na stronie react-native/packager/blacklist.js.

+0

czy można zignorować wszystkie pliki i foldery dla ścieżki regex? na przykład, w jaki sposób zignorowałbyś wszystkie poniżej node_modules? –

+0

Naprawdę nie chcesz "ignorować" wszystkich plików w module node_modules. Wtedy Twoja aplikacja na pewno nie zadziała. – Albert

+0

Od wersji macierzystej 46. Czarna lista została przeniesiona do 'metro-bundler'. Przykład: https://github.com/facebook/react-native/issues/7271#issuecomment-321842044 – Shiki

Powiązane problemy