6.3.1
4.0.3
2.0.0
Dies ist spezifisch für Typoskript-Projekte mit Quelldateien, die protractor/globals
importieren. Insbesondere beim Importieren von protractor/globals
, da die NPM-Version die globals.ts
Datei anstelle einer entsprechenden Definitionsdatei ( globals.d.ts
) enthält, berechnet der Typoskript-Compiler das gemeinsame Quellverzeichnis des konsumierenden Typoskript-Projekts zum gemeinsamen Pfad zwischen der Protractor-Abhängigkeit global.ts
(wahrscheinlich node_modules/protractor
) und wo auch immer die Quellen des konsumierenden Projekts enthalten sind (z. B. src/test/**/*.ts
). Dies führt dazu, dass der Compiler die Quelldateien mit allen übergeordneten Verzeichnissen ausgibt.
Beachten Sie, dass dies nur ein Problem damit ist, wo der Typescript-Compiler die kompilierten Dateien ausgibt; die Kompilierung läuft gut und der Winkelmesser wird (so großartig) wie erwartet verbraucht.
Um das Szenario, das ich schlecht beschreibe, besser zu demonstrieren, sehen Sie sich dieses Beispielprojekt an .
Ich vermute, die Lösung hier wäre eine Kombination aus zwei Dingen:
globals.ts
Datei kompiliert wird; undglobals.ts
Datei aus dem NPM-Release-Paket zu entfernen, sodass nur die kompilierte Javascript-Datei und die entsprechende Definitionsdatei übrig bleiben.Wenn dies in Ordnung ist, würde ich gerne einen Pull-Request senden, um den ersten Teil der Lösung zu bearbeiten. Wenn der Freigabeprozess für NPM immer noch dem Freigabedokument des Projekts folgt, würde ich dies auch gerne mit einem Schritt zum Entfernen der Datei globals.ts
aktualisieren, obwohl dies möglicherweise besser von jemandem bearbeitet werden könnte, der tatsächlich Freigaben durchführt.
Ich habe dies gründlich durchdacht und glaube, dass sich der Typescript-Compiler wie erwartet verhält, aber lassen Sie es mich wissen, wenn Sie anderer Meinung sind, da ich immer noch mit Typescript nass werde.
(Bearbeiten: Format aktualisieren, um die Fehlervorlage widerzuspiegeln)
@tmeneau Danke für dieses Problem: Das Github-Beispiel hat mir sehr gut gefallen... 👍 👍 👍
Dies ist also ein Nebeneffekt bei der Verwendung von outDir. Wenn beispielsweise outDir
auf output
, wird zusätzlich zu den transpilierten Dateien auch output/node_modules/protractor/globals.js
transpiliert. Ich habe ursprünglich die Datei globals.ts eingefügt, da Sie (damals) nach einigen Experimenten keine Dateitypen importieren konnten, ohne die TypeScript-Datei zu haben.
Um die Vorschläge durchzugehen:
exampleTypescript
scheint dies zu funktionieren. Ich aktualisiere die .npmignore, um diese Datei nicht zu veröffentlichen und aktualisiere Protractor auf TypeScript 2. Siehe: https://github.com/angular/protractor/pull/3485@cnishina froh, dass das Beispiel geholfen hat! Vielen Dank für die schnelle Antwort, das sieht gut aus, abgesehen von einer Sache, die mich vielleicht verwirrt: Während Ihre Änderung die global.ts
Datei aus dem NPM-Paket entfernt, wird keine entsprechende globals.d.ts
Deklaration angezeigt den protractor/globals
Import für den Typoskript-Compiler für konsumierende Projekte unsichtbar machen?
Ich denke, der erste Teil meines Vorschlags bestand darin, das kompilierte globals.js
zugunsten der globals.d.ts
Deklaration zu entfernen, sondern beides zu haben, damit das NPM-Paket Folgendes enthält:
nur ohne die globals.ts
Quelldatei.
Ich glaube, dass dies mit tsc mit dem --declaration
Flag beim Kompilieren der global.ts
Datei erreicht werden kann. Zum Beispiel sollte das Ändern der tsc:globals-Schluckaufgabe wie unten den tsc
und tsc:w
Aufgaben in der package.json gibt, die möglicherweise ebenfalls aktualisiert werden müssen vorausgesetzt, dies würde nicht-globale Zusammenstellungen nachteilig verändern:
gulp.task('tsc:globals', function(done) {
runSpawn(done, 'node', ['node_modules/typescript/bin/tsc', '--declaration', 'globals.ts'],
'ignore');
});
Lassen Sie mich wissen, wenn ich etwas vermisse, und nochmals vielen Dank für die schnelle Lösung! Übrigens ist die Verwendung von Protractor mit Typescript ein echter Knaller!
Yup... 👍 globals.d.ts
sollte immer noch da sein, damit der protractor/globals
Import funktioniert. Ich habe die PR aktualisiert. Vielen Dank!
Hilfreichster Kommentar
@cnishina froh, dass das Beispiel geholfen hat! Vielen Dank für die schnelle Antwort, das sieht gut aus, abgesehen von einer Sache, die mich vielleicht verwirrt: Während Ihre Änderung die
global.ts
Datei aus dem NPM-Paket entfernt, wird keine entsprechendeglobals.d.ts
Deklaration angezeigt denprotractor/globals
Import für den Typoskript-Compiler für konsumierende Projekte unsichtbar machen?Ich denke, der erste Teil meines Vorschlags bestand darin, das kompilierte
globals.js
zugunsten derglobals.d.ts
Deklaration zu entfernen, sondern beides zu haben, damit das NPM-Paket Folgendes enthält:nur ohne die
globals.ts
Quelldatei.Ich glaube, dass dies mit tsc mit dem
--declaration
Flag beim Kompilieren derglobal.ts
Datei erreicht werden kann. Zum Beispiel sollte das Ändern der tsc:globals-Schluckaufgabe wie unten dentsc
undtsc:w
Aufgaben in der package.json gibt, die möglicherweise ebenfalls aktualisiert werden müssen vorausgesetzt, dies würde nicht-globale Zusammenstellungen nachteilig verändern:Lassen Sie mich wissen, wenn ich etwas vermisse, und nochmals vielen Dank für die schnelle Lösung! Übrigens ist die Verwendung von Protractor mit Typescript ein echter Knaller!