Ich arbeite an einem CLI-Tool in NodeJS, das ein anderes von uns entwickeltes NodeJs-Paket verwendet, nämlich ein SDK.Zwei Versionen desselben npm-Pakets in der Knotenanwendung
Die Sache ist, wir haben nur eine V2-Version des SDK veröffentlicht, und wir wollen die CLI-Benutzer eine Legacy-Modus bieten, so dass sie entweder die erste oder die zweite Version unseres SDK, wie so verwenden:
$ cli do-stuff
#execute sdk v2
Oder
$ LEGACY_MODE='on' cli do-stuff
#execute sdk v1
Mein Problem ist, dass ich keine saubere Art und Weise zu verwenden, um zwei Versionen derselben Abhängigkeit in meinem CLI gefunden haben. Ich habe versucht, npm-install-version Paket zu verwenden. Es funktioniert gut in meiner lokalen Umgebung, aber nach dem Veröffentlichen meiner CLI und tun npm install -g my-cli
, funktioniert es nicht mehr, weil es einen Ordner node_modules in dem aktuellen Ordner anstelle des Ordners /usr/local/lib/node_modules/my-cli
erstellt. Ich habe auch versucht multidep, und ich habe irgendwie das gleiche Problem.
Vorerst meine package.json enthalten nicht alle meine sdk, aber ich möchte so etwas wie haben:
"dependencies": {
"my-sdk": "2.0.0"
"my-sdk-legacy": "1.0.0"
}
Oder
"dependencies": {
"my-sdk": ["2.0.0", "1.0.0"]
}
Ich habe nichts anderes gefunden noch. Ich denke darüber nach, die erste Version meines SDK-Pakets mit einem anderen Namen wie "my-sdk-legacy" zu veröffentlichen, aber das möchte ich wenn möglich vermeiden.
Irgendeine Lösung dafür?
Ich habe versucht, die zweite Version, aber die Sache ist, npm nicht umbenennen den Ordner nach dem Checkout von Git. Im Ordner '' 'node_modules''' gibt es nur einen Ordner namens" my-sdk ". Also der folgende Code funktioniert nicht '' 'require ('my-sdk-v1');' '' Aber ich kann '' 'erfordern ('my-sdk');' '' Also ich Ich denke, ich bleibe bei der ersten Version, auch wenn es für mich etwas weniger praktisch ist. Danke – Greg