2016-06-09 4 views
3

Ich habe ein Knotenmodul erstellt, das eine JSON-Datei mit Daten aus mehreren APIs erstellt. Es wurde entwickelt, um die JSON Datei in dem Verzeichnis zu speichern, in dem Sie sich befinden, in der CMD/Terminal.Kann ich einen Skript-Alias ​​verwenden, der in der package.json eines anderen Knotenmoduls vorhanden ist?

Ich bin in der Lage, es erfolgreich selbst als ein Projekt auszuführen, aber ich habe es unabhängig von dem Hauptprojekt entwickelt, dass es innerhalb verwendet werden soll. Es wurde im Hauptprojekt installiert, aber es kann nur dort ausgeführt werden, wo es package.json gibt, da sich dort mein Skript-Alias ​​befindet.

Es gibt andere Knotenmodule, die die JSON Datei verwenden müssen, aber sobald ich an die anderen Module Stammverzeichnisse in CMD/Terminal will Knoten navigieren package.json ist das Modul verwenden und können das Skript alias nicht finden, da es nicht der Fall ist dort existieren.

Das Hinzufügen des Skriptalias zu jedem Modul ist keine praktikable Lösung, da das Projekt ein Prototyp ist und ständig hinzugefügt wird.

Gibt es eine Möglichkeit, dass der relevante package.json referenziert und für den Skriptalias verwendet wird, unabhängig davon, wo ich ihn im Hauptprojekt verwende?

Löse ich dieses Problem falsch? Jede Hilfe würde sehr geschätzt werden. Dies ist meine erste Frage. Wenn ich also etwas falsch gemacht habe, bitte, lass es mich wissen, damit ich mich verbessern kann. Danke im Voraus.

+0

Warum darf der implementierende Client die Konfiguration für das fragliche Modul nicht injizieren? Dies ist ein sehr häufiges Muster in Node und es klingt, als würde es hier passen. – peteb

+0

@peteb Ich hätte wahrscheinlich erwähnen sollen, dass es zu diesem Zeitpunkt meistens ein Dev-Tool sein wird. Das Projekt ist ein Prototyp, wie ich schon erwähnt habe. Das Ausführen von einem CLI gibt uns nur eine Möglichkeit, sicherzustellen, dass die Struktur und Eigenschaften der Daten mit dem Rest der App übereinstimmen.Wenn es verfügbar wird, wird es ein "erforderliches" Modul sein, um Objekte zu erstellen und Dateipfade werden kein Problem sein, da es alles in Code sein wird, der in einer bereits modularen Umgebung arbeitet, so dass es bereits eine machbare Lösung dafür gibt Das. Ich hoffe das beantwortet deine Frage. –

+0

In diesem Fall übergeben Sie einfach den Pfad zum Speichern der JSON-Datei als Befehlsargument? – peteb

Antwort

0

Ein bisschen spät, aber dennoch eine Antwort.

Wir entschieden uns für den Ansatz von peteb (danke), ihn einfach aus dem entsprechenden Paket (dem mit dem internen Skript-Alias) zu verwenden und ihm den externen Dateipfad durch ein Argument zuzuführen.

Das funktioniert, weil die bestehende Struktur für die Argumente war:

npm run <script> <arg1> <filepath> 

Obwohl das filepath Argument gemeint war pwd oder %CD% zu sein, ist der Ausgang sowohl eine normale Filepath sowieso. Also würde jeder Dateipfad theoretisch funktionieren, solange Sie nicht auf andere Probleme stoßen, die es rechtfertigen würden, nach einer Lösung für dieses Problem woanders zu suchen, wie die Länge, die für das Dateisystem zu lang ist und was nicht.

Etwas, das erwähnenswert ist, ist vielleicht, dass etwas wie dieses besser für eine andere Umgebung als NodeJS geeignet gewesen wäre. Es sieht nicht so aus, als wäre ein Skript außerhalb des internen Pakets eine Möglichkeit, und es wäre vielleicht besser gewesen, ein externes Programm zu programmieren, um solche Probleme zu lösen.

Ich bin nicht so kompetent bei NodeJS wie viele Leute hier auf der Website sind, aber vielleicht könnte eine ausführbare Datei mit dem Code, der von einer .js Datei aufgerufen wird, funktionieren, wenn das überhaupt möglich ist.

Verwandte Themen