2017-07-28 3 views
0

Ich arbeite an einem größeren Projekt, das in eine Reihe von npm Paketen aufgeteilt ist. Zwischen den Paketen bestehen mehrere Abhängigkeiten.Wie automatisch npm Pakete zur Installationszeit verknüpfen?

main/ 
    pkg1/ 
    pkg2/ 
    ... 

dass pkg2 hängt auf pkg1 Angenommen, so in main/pkg2/package.json Ich habe: Der gesamte Code-Basis wird in einem Hauptverzeichnis wie folgt gespeichert

"dependencies": { 
    "pkg1": "^0.1.0" 
} 

ich meine Pakete miteinander verbunden haben mit npm link. Wenn ich jedoch die Entwicklung auf einer neuen Maschine starte oder aus irgendeinem Grund die Pakete neu installieren muss, kann ich nicht einfach npm install in pkg2/ sagen. Es würde fehlschlagen, weil pkg1 nicht gefunden werden konnte. (Es ist nicht veröffentlicht, aber wie auch immer, ich möchte die lokale Version, weil ich beide Pakete entwickeln).

Natürlich kann ich alle Verknüpfungen manuell als Anruf npm install tun, aber es ist ein Aufwand. Gibt es eine Möglichkeit, dies in einem einzigen Schritt zu tun?

Meine bisherige Forschung:

This Frage schlägt das Schreiben einen Preinstall Skript, aber ich will nicht in der Produktion Verknüpfung zu halten, nur in der Entwicklungsumgebung, wie another Antwort Punkte it out.

Ich habe auch npm link in pkg1/ dann npm install --link in pkg2/ versucht. Entsprechend dem Handbuch,

Das Argument --link wird in einigen Fällen dazu führen, dass npm globale Installationen in den lokalen Bereich einbindet.

Nicht in meinem Fall aber.

Antwort

0

Sie können hierfür zelda verwenden. Es wurde von Feross geschrieben und genau für diesen Zweck entworfen.

+0

Sieht wie eine ausgezeichnete Lösung aus. Vielen Dank! – kkeri

0

Ich bin kein Fan davon, es so zu machen; Im Allgemeinen würde ich lieber ein lokales Repository ausführen oder Git-URLs für Abhängigkeiten wie diese verwenden.

Das heißt, wenn Sie weiter npm Link verwenden möchten, können Sie immer die Preinstall-Skript-Ansatz verwenden, aber nicht den Preinstall-Schlüssel verwenden.

"autolink": "cd ../project1 && npm link && cd ../project2 && npm link project1_name", 

Dann in Ihrem cli können Sie $ npm run autolink beim ersten Setup ein dev env tun.

+0

Paul, können Sie mich mit einer Ressource verknüpfen, die Ihren bevorzugten Weg beschreibt? Ich verstehe nicht wirklich, was du meinst, aber es könnte nützlich sein, wenn ich meine Pakete auf Github hosten möchte. Wie auch immer, danke für die Idee des Autolink-Skripts. In der Zwischenzeit habe ich herausgefunden, dass mein wirkliches Problem darin besteht, die richtige Reihenfolge für das Aufsuchen von Paketverzeichnissen und das Ausführen der Skripte herauszufinden. Es ist nicht offensichtlich, wenn ich eine Handvoll Pakete habe. – kkeri

Verwandte Themen