Ich habe kürzlich ein privates Modul für NPM veröffentlicht, das einen gemeinsamen Code für einige unserer Dienste verwendet.NPM-Einstiegspunkt ohne index.js ändern
Der Code ist in ES6 geschrieben und so müssen wir ihn mit Babel transpilieren, bevor er in NPM veröffentlicht wird. Ich habe ein prepublish-Skript, das src
in lib
transpiliert.
In diesem Modul gibt es keine index.js
Datei, da es sich nur um einen gemeinsamen Code handelt.
Das Problem, das ich habe, ist, dass, wenn ich das Modul von NPM installiere, require('@ourorg/ourmodule/somecode')
nicht funktioniert (Modul kann nicht gefunden werden). Ich muss stattdessen require('@ourorg/ourmodule/lib/somecode')
verwenden.
Ich habe versucht, das main
Feld in package.json
zu vielen Variationen von lib
zu ändern, aber es scheint nicht zu funktionieren, wenn ich gehöre index.js
Datei, in welchem Fall require('@ourorg/ourmodule')
zurückkehrt, was es exportiert wird. Eine Problemumgehung, die ich sehen kann, würde sein, den allgemeinen Code in eine index.js
Datei zu exportieren, aber das ist überhaupt nicht wartbar.
Es scheint, als sollte es einen einfacheren Weg geben, dies zu tun? Wir können sicherlich nicht die ersten sein, die einen gemeinsamen Code als Abhängigkeit haben wollen. Das Modul funktioniert wie erwartet, wenn ich die Anweisung '/ lib /' in meine require-Anweisung einbeziehe, obwohl der Stammordner keine 'index.js' enthält. Es gibt wirklich keine Möglichkeit zu sagen, "anstatt in den Projektstamm zu schauen, schau in diesen Ordner"? –
@RhysCamm: Nach den Antworten ([1] (https://github.com/npm/npm/issues/10506#issuecomment-191979827), [2] (https://github.com/nodejs/node/ issues/3953 # issuecomment-158951174)) zu früheren Anfragen für diese Funktion ist es nicht möglich, dies zu tun, ohne den Modulauflösungsalgorithmus des Knotens zu ändern, der zu diesem Zeitpunkt effektiv in Stein gemeißelt ist. Ich denke, du hast leider kein Glück. –