Testen Sie zwei verschiedene npm-Paketversionen gleichzeitig

8

Wenn ich ein npm-Paket erstelle, würde es manchmal die Notwendigkeit geben, die alte Version des Abhängigkeitspakets zu verwerfen.

Wenn die neue Version eine neue API hat, kann ich den Code in diesem Muster schreiben:

%Vor%

Und mit diesem Muster, wenn ich den Test schreiben möchte, kann ich nur den Code installed version testen. Der Code der anderen Version kann nicht getestet werden.

Als reales Beispiel hat React v16 in React v15 und v16 eine neue API Portal . Vor der Veröffentlichung von Portal hat v15 unstable_renderSubtreeIntoContainer api, um ähnliche Funktionen zu realisieren.

Also wäre der Code für React wie folgt:

%Vor%

Also ich möchte fragen, gibt es irgendeine Methode, mit different dependency version zu testen?

Zur Zeit denke ich an eine Methode, die andere Version erneut zu installieren und zu testen. Aber es kann nur lokal tun. Es kann nicht auf ci arbeiten und es kann nicht in Deckung zusammen zählen.

Ich denke, das ist nicht nur für den Reaktionstest. Es kann sich im node.js-Test befinden. Jeder Vorschlag kann diskutiert werden.

Aktualisiert

Diese Frage hängt möglicherweise mit der Installation von two versions dependency in npm zusammen. Aber ich weiß, derzeit zwei Versionen installieren Abhängigkeit ist nicht praktikabel.

    
Chen-Tai Hou 22.11.2017, 04:22
quelle

3 Antworten

4

Hier ist eine mögliche Lösung, nicht sicher, dass es wie erwartet funktioniert. Aber Sie werden eine Richtung haben, um vorwärts zu gehen.

package.json

%Vor%

Hinweis: In der obigen package.json Datei habe ich einen neuen Schlüssel customDependecies hinzugefügt, den ich für die Installation mehrerer Abhängigkeiten verwenden werde. Hier verwende ich body-parser Paket für die Demo. Als nächstes brauchen Sie eine Datei, die dieses key lesen und die Deps installieren kann.

install-deps.js

%Vor%

Hier installiere ich die Deps nacheinander im Ordner tmp und nachdem ich sie installiert habe, verschiebe ich sie in den Ordner ./node_modules .

Sobald alles installiert ist, können Sie die Versionen wie folgt überprüfen

index.js

%Vor%

Hoffe, das wird deinem Zweck dienen.

    
Vipin Kumar 04.12.2017, 09:43
quelle
0

Erstellen Sie 3 separate Projekte (Ordner mit package.json) und einen freigegebenen Ordner:

  1. Ein freigegebener Ordner mit dem Testmodul ( my-test ). Exportieren Sie eine Funktion, um den Test auszuführen;
  2. Ein Clientprojekt, das my-test und Abhängigkeit v1 importiert. Exportieren Sie eine Funktion, die die Testfunktion in my-test .
  3. aufruft
  4. Ein Clientprojekt, das my-test und Abhängigkeit v2 importiert. Exportieren Sie eine Funktion, die die Testfunktion in my-test .
  5. aufruft
  6. Ein Master-Projekt, das beide Client-Projekte importiert. Führen Sie jede exportierte Funktion aus.
André Werlang 28.11.2017 18:42
quelle
0

Sie müssen sie separat ausführen. Erstellen Sie einen separaten Projektordner für jede Abhängigkeitsversion. Ex. Reagieren10, Reagieren11, Reagieren12. Jeder hat seine eigene package.json , die für die korrekte Version angegeben ist. Wenn Sie die Tests integration und / oder versioned ausführen, führen Sie Ihre Standard-Komponententests für jede Version aus, aber es kann auch ratsam sein, diesem Ordner versionsspezifische Komponententests hinzuzufügen.

Das Erstellen einer make -Datei würde Ihnen das Leben bei der Ausführung Ihrer vollständigen Testsuite erleichtern. Wenn Sie dies tun, können Sie dies leicht in CI integrieren.

    
Seth 29.11.2017 22:54
quelle