2015-05-05 12 views
5

Ich bin putting together a streamlined development process mit reagieren und reagieren native dass:Wie kann ich spezifische Knotenmodule der Abhängigkeiten meines Pakets in den Paketpackern von react-native auflisten?

  • Pakete ermutigt,
  • babel verwendet es6-js zu transformieren (kompiliert es vor der Veröffentlichung/Installation),
  • einen Spielplatz hat, der uns Sie spielen mit native und Web components.

Der Web-Teil ist vollkommen in Ordnung. Es ist der Eingeborene, der Probleme verursacht, und es hat mit dem Packer von react-native zu tun.

Unterm Strich ist: wenn das Paket entweder durch npm link verbunden ist oder direkt aus dem Spielplatz erforderlich wie in require('../../') reagieren-native der Abhängigkeitsauflöser gehen immer versuchen node_modules, die meiste Zeit Abhängigkeiten innerhalb meines Pakets zu identifizieren, es endet nie, es zu tun .

Die temporäre Lösung, die ich gefunden habe, ist die Installation des Pakets in Spielplatz, aber dies beinhaltet Neuinstallation es jedes Mal, wenn ich ein Update, das ist nicht toll, weil Sie Ihre Änderungen nicht sofort sehen können (auch wenn es wäre automatisiert, es würde Zeit brauchen).

Ich glaube, dass eine bessere Lösung wäre, den Abhängigkeits-Resolver zu bitten, jene spezifischen Module zu ignorieren, die ich nicht benötige (die in devDependencies hauptsächlich!). Ich habe versucht, react-native/packager/blacklist.js Mangling durch Hinzufügen von Pfaden zu dieser Liste und sogar die Überprüfung gegen die dependency resolver, aber nichts davon würde funktionieren.

Kann mir jemand mit mehr Erfahrung mit dem Packager einen Hinweis geben, wie ich den Dependency Resolver passieren lassen würde? Alternativ wäre es großartig, wenn der Verpacker getrennt werden könnte und der Transformationsprozess der Wahl überlassen würde, aber ich weiß nicht, ob das auch machbar wäre.

Antwort

9

fand ich die folgende Lösung, bezogen auf den Kommentar in 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. 

erstellen rn-cli.config.js in der Wurzel Ihres Projekts mit den folgenden Inhalten:

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

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

module.exports = config; 

Das zweite Argument Die blacklist-Funktion ist eine zusätzliche Liste von in der Blacklist aufgeführten Pfaden, bei denen es sich um reguläre Ausdrücke handeln kann. Weitere Beispiele finden Sie unter react-native/packager/blacklist.js.

+0

ist es möglich, alle Dateien und Ordner für Regex-Pfad zu ignorieren? zum Beispiel, wie würdest du alles unter node_modules ignorieren? –

+0

Sie wollen wirklich nicht alle Dateien unter node_modules 'ignorieren'. Dann wird deine App sicherlich nicht funktionieren. – Albert

+0

Ab der reaktiven nativen 46. Die schwarze Liste wurde in "metro-bundler" verschoben. Beispiel hier: https://github.com/facebook/react-native/issues/7271#issuecomment-321842044 – Shiki

Verwandte Themen