Generierte Definitionsdatei (.d.ts) von typescript funktioniert nicht mit package.json typings

9

Ich habe eine Definitionsdatei (d.ts) aus meinem Typoskript-Projekt mit dem Argument --declaration aus dem TSC-Compiler erstellt.

Aber diese generierte Definitionsdatei funktioniert anscheinend nicht, wenn ich versuche, das Paket mit der Eigenschaft typings im npm package.json zu veröffentlichen. Ich habe ein anderes Projekt erstellt, um es zu testen.

Es beschwert sich mit der folgenden Meldung: " Exportierte externe Paketdatei-Typisierungsdatei '... d.ts' ist kein Modul. Wenden Sie sich an den Paketautor, um die Paketdefinition zu aktualisieren.

Dies sind meine Quelldateien:

MeinInterface.ts

%Vor%

MyClass.ts

%Vor%

MyInheritedClass.ts

%Vor%

Der Befehl tsc lautet wie folgt:

%Vor%

Dies ist die generierte Definition:

meinedefinition.d.ts

%Vor%

Gibt es noch eine andere Sache, die ich zu tun habe oder die generierte Definition angeblich nicht in den package.json typings funktioniert?

Für weitere Details aktualisieren:

Das Szenario ist, dass ich 2 Projekte habe:

  • Das erste Projekt ist, wo ich die Bibliothek erzeuge, wo ich nach npm veröffentlichen werde, und die package.json ist, wo ich die typings -Eigenschaft verlinke auf die Datei mydefinition.d.ts, die vom Befehl tsc -d erzeugt wird .

  • Das zweite Projekt, das ich erstelle, um das erste zu testen, indem ich das generierte Paket (mit Typings) hinzufüge.

Eine Verknüpfung mit den 2 Projekten und weitere Links für das Szenario:

Ссылка

Ich denke, das Problem ist mit dem "Ihre Definitionsdateien sollten als externe Module geschrieben werden" am ersten Link. Aber ich möchte wissen, ob es einen Weg gibt, diese generierten Definitionen auf die typings -Eigenschaft von package.json zu setzen.

Um das Problem zu reproduzieren:

  • Klonen Sie dieses Repo: Ссылка

  • Führen Sie 'npm install' aus, öffnen Sie mit VSCode und gehen Sie zur Datei 'src / test.ts'.

jvitor83 07.05.2016, 17:02
quelle

2 Antworten

2
  

Die Lösung war:

1 - Fügen Sie eine einzige Datei 'index.ts' hinzu, die alle anderen Dateien exportiert.

%Vor%

2 - füge beim Erstellungsprozess zwei Kompilierungen / Umsetzungen der Dateien hinzu (eine für Deklarationen und eine weitere für die einzelne js-Datei [ohne out-Eigenschaft im TSC-Compiler])

%Vor%

Weitere Informationen zum Build-Prozess: Ссылка

und Indexdatei: Ссылка

    
jvitor83 20.05.2016, 20:45
quelle
1

Wann erhalten Sie diesen Fehler?

Ich habe die erzeugte d.ts Datei in einem anderen Projekt verwendet und funktioniert gut.

%Vor%

Und beim Kompilieren wird eine JS-Datei erzeugt,

%Vor%

Erhalten Sie diesen Fehler, wenn Sie dies in einer HTML-Datei verwenden? Haben Sie die Datei "mydefinition.js" in den HTML-Code eingefügt?

Aktualisieren

Basierend auf Ihren mehr Details, hier ist die Lösung, die ich vorschlagen kann, Fügen Sie eine weitere Datei namens index.ts hinzu und exportieren Sie alle Ihre Module von dort,

index.ts

%Vor%

Fügen Sie eine tsconfig.json-Datei zum einfachen Erstellen hinzu,

tsconfig.json

%Vor%

Hinweis Ich habe es zu einem commonjs-Modul gemacht (nicht sicher, ob es für Ihre Bedürfnisse funktioniert), erzeugen Sie Build mit dem Befehl tsc. Es erzeugt Dateien wie unten erwähnt, es hat js Dateien für alle TS-Dateien hinzugefügt und d.ts ist auch für alle Module, aber da wir alle Module aus einer einzigen Datei exportiert haben, wird es einfacher sein, in package.json Datei für NPM-Modul zu verwenden .

Fügen Sie dann package.json in das npm-Modul ein, das Sie wie folgt veröffentlichen möchten. Betrachten wir den Modulnamen foo

package.json

%Vor%

Fügen Sie nun den foo-Ordner in node_module hinzu, die endgültige Struktur für das zweite Projekt wird wie folgt aussehen,

Schließlich in Ihre test.ts Datei importieren und verwenden,

test.ts

%Vor%

Hoffe, das hilft.

    
Madhu Ranjan 10.05.2016 19:33
quelle

Tags und Links