Die Situation wäre:
Ich entwickle 2 Projekte in meiner Node.js-Entwicklungsumgebung, P1 und P2.
P1 erforderte die Entwicklung von zwei einfachen Modulen, mod1 und mod2, die in gespeichert sind P1/lib
. Jedes dieser Module löst seine externen Abhängigkeiten in P1/node_modules
. Notwendige Abhängigkeiten für P1 wurden über npm in diesem Ordner installiert.
Jetzt wollen wir mod1 in dem anderen Projekt P2 wiederverwenden. Hier sind meine Zweifel aufgetaucht. Ich könnte ...
Kopiere einfach mod1 nach
P2/lib
. Replikation, daher denke ich nicht einmal über diese Option nach.Von P2 Referenzmod1 von P1 :
require($PROJECTS_DIR + '/P1/lib/mod1')
. Keine gute Option, auf diese Weise würde P2 von P1 abhängen.Legen Sie mod1 in ein übergeordnetes Verzeichnis oder verwenden Sie NODE_PATH, damit P1 und P2 es einfach durch doint auflösen können
require('mod1')
. Bei der Bereitstellung sollte ich jedoch auch dieses übergeordnete Verzeichnis bereitstellen, das etwas schmutzig erscheint.Ich möchte mod1 als npm-Modul behandeln, damit es problemlos in jedem Projekt oder jeder Umgebung installiert werden kann. In diesem speziellen Fall kann ich das Modul jedoch nicht in npm veröffentlichen, da es zu projektspezifisch ist. Ich könnte ein privates npm-Repository erstellen und mod1 hineinstecken. Das Wesentliche dabei wäre, es so einzurichten, dass auch aus der Produktionsumgebung heraus darauf zugegriffen werden kann. Lohnt es sich?
Was ist mit dem Zusammenfügen
node_modules
? (externe Abhängigkeiten und meine eigenen Bibliotheken). Das wäre großartig, da Module wie "require" ("module") nur benötigt werden können. Aber es scheint auch ziemlich schmutzig.Ich bin mir nicht sicher, wie
npm link
es bei der Bereitstellung funktionieren würde. Es wird ein symbolischer Link erstellt, dem beim Festschreiben von Code über Git oder SVN nicht gefolgt wird. Wenn ichnpm install
in der Produktion laufe , wird dann auch das verknüpfte Modul installiert?
Keines der oben genannten befriedigt mich ganz. Ich weiß nicht, ob eine davon geeignet ist, oder Sie haben andere Vorschläge, aber gibt es bevorzugte Möglichkeiten, eigene private Bibliotheken so zu strukturieren , dass sie problemlos in anderen Projekten wiederverwendet werden können?
npm link
auch in der Produktionsumgebung verwenden müsste ? Oder ist es implizit in.npm install
Gibt es Möglichkeiten, es in package.json anzugeben?