2014-06-29 11 views
8

Ich versuche, einige Module zu verpacken, an denen ich gearbeitet habe. Ich habe fünf Module, aufgeteilt in fünf Dateien. Vier davon sind die eigentlichen nach außen gerichteten Module, die der Benutzer installieren soll. Der andere ist ein Supportmodul, das alle korrekt funktionieren müssen. Sie sind alle im selben Verzeichnis gespeichert. Ich möchte in der Lage sein, jedes als separates Modul im selben Verzeichnis anzugeben. Aber soweit ich das beurteilen kann, kann man nur ein einzelnes Modul in package.json definieren.Mehrere Module im selben Paket notieren.json Datei

Gibt es eine Möglichkeit, mehrere Module anzugeben? Wenn nicht, bedeutet das, dass dies eine schlechte Übung sein muss. Wie sollte ich die Exporte meines Moduls strukturieren, um sie in ein Hauptmodul zu verschieben?

+0

Warum nicht einfach veröffentlichen sie alle als separate Module? Sie wissen nie, wie die Gemeinschaft sie verwenden wird, und sie könnten eins von 5 auswählen, um zu verwenden. – dylants

+0

@dylants Aber wie mache ich das? Der einzige Weg, den ich finden konnte, war, sie in ein separates Verzeichnis zu legen. –

+0

Ja, jeder muss in separaten Verzeichnissen leben, höchstwahrscheinlich auf derselben Ebene innerhalb Ihrer Verzeichnisstruktur. Wenn einer den anderen benötigt, fügen Sie ihn zu seinen Abhängigkeiten hinzu und 'npm install' es. Jeder enthält dann seinen eigenen Quellcode, Testcode und die Datei 'package.json'. – dylants

Antwort

6

Derzeit gibt es keine unterstützte Möglichkeit, eine separate package.json Datei für jedes Modul zu haben, das Sie im selben Verzeichnis veröffentlichen. Und das ist wirklich sinnvoll, da jedes Paket, das Sie bereitstellen, Probleme, Funktionsanforderungen, Fehler usw. haben kann, die separat behandelt werden müssen und keine Aktualisierungen der anderen erzwingen. Wenn Sie diese voneinander trennen, können Sie sich unabhängig voneinander auf die Wartung konzentrieren und den Verbrauchern dieser Module erlauben, sie separat einzubeziehen. Viele größere Projekte, die damit begonnen haben, etwas zu schaffen, von dem die Leute denken, dass es ihnen gefällt, haben am Ende, dass das, was jeder tatsächlich benutzt, das zufällige Teilprojekt ist, das separat erstellt wurde.

So separate Verzeichnisse und separate package.json Dateien, dann enthalten Abhängigkeiten innerhalb der package.json für jeden. Wenn Sie nicht bereits es gibt ein paar gute writeups gesehen haben Entwicklung von Knoten Pakete zu helfen, hier:
https://www.npmjs.org/doc/misc/npm-developers.html
https://www.npmjs.org/doc/files/package.json.html

+0

Wenn meine Untermodule versuchen, das Hauptmodul zu "require()", welchen Pfad benutzen sie? Unter der Annahme, dass ich jedes (einschließlich des Hauptverzeichnisses) in Verzeichnisse derselben Ebene lege, habe ich keine Ahnung, wie ich auf die anderen verweisen soll. Funktioniert nur der Name, nachdem ich die Paketdateien erstellt habe? –

+0

Wenn es sich um wirklich unabhängige Module handelt, die Sie für npm bereitgestellt haben, würden Sie sie ohne den Dateipfad referenzieren. Wenn du also ein "genial-modul" hättest, würdest du 'require ('awesome-modul')' 'sagen. Dies bedeutet, dass Sie jedes Modul zuerst "npm" veröffentlichen müssen, bevor Sie es für den ordnungsgemäßen Betrieb des Codes benötigen. Aber wenn Sie sie dokumentieren und erklären, was sie tun, können auch andere von Ihrer Arbeit profitieren. – dylants

+0

Achten Sie auch beim Veröffentlichen dieser Module auf die [semver] (https://www.npmjs.org/doc/sever.html) -Notation für Ihre Paketversionen. – dylants