Ich habe ein lokales Knotenpaket geschrieben in TypeScript, das ich in meinem aktuellen Projekt verwenden möchte. Mit NPM kann ich lokale Pakete wie folgt installieren:tsd: lokale Definitionsdatei installieren
$ npm install --save /path/to/package
Oder:
$ npm install --save /path/to/package.tar.gz
Dies installiert die erforderlichen Js-Dateien im Verzeichnis node_modules. Es gibt auch eine generierte .d.ts-Datei in diesem Paket, die ich in meinem Projekt installieren möchte (automatisch in typings/tsd.d.ts verlinken). Aber mit dem folgenden Befehl hat keine Auswirkung:
$ tsd install /path/to/package/package.d.ts --save
Es sagt >> zero results
. Also, wie kann man lokale Definitionsdateien installieren, ohne ein Repository zu benötigen?
UPDATE:
kann ich einfach meine d.ts Kopieren Sie die Datei in das Verzeichnis Typisierungen und mein Texteditor (für mich ist es Sublime Text mit dem Typoskript Plugin) es ist in der Lage, die Erklärung zu finden. Die Verzeichnisstruktur ist so etwas wie diese:
/my-project/
/typings/
tsd.d.ts - auto-generated by `tsd install`
node/ - I've installed the node definitions
my-package.d.ts - copied or symlinked file
my-project.ts - I'm working here
Jedoch habe ich ein Problem habe, wenn die einzige Funktion in module.exports
(exports = function...
in Typoskript) exportieren. In diesem Fall ist die exportierte Funktion irgendwie "anonymous" und wird nicht einmal in der d.ts Datei benannt, also muss ich sie manuell bearbeiten.
Mein Testfall:
'my-Paket' bietet eine einzige Funktion, in der Regel als 'myPackage' importiert:
export = function myPackage(a: string, b: string) { return a + ' ' + b; };
declaration
zu true
in tsconfig.json gesetzt, so dass der tsc
Befehl erzeugt eine my-package.d.ts Datei:
declare var _default: (a: string, b: string) => string;
export = _default;
Mein Paket soll in meinem Projekt wie folgt verwendet werden:
import myPackage = require('my-package');
myPackage('foo', 'bar');
jedoch tsc nicht myPackage
finden, obwohl my-package.d.ts
in den Typisierungen Ordner kopiert wurde. Ich brauche diese Datei zu bearbeiten, so dass es wie folgt aussieht:
declare var myPackage: (a: string, b: string) => string;
//export = _default; - not needed
Oder noch besser für eine korrekte Funktion require()
:
declare module 'my-package' /* this is the string passed to require() */ {
export = function(a: string, b: string): string;
}
die d.ts Dateien aus dem node_modules importieren (ich nur dort eine Datei kopiert) scheint für mich ganz gut zu arbeiten, gibt es keine Notwendigkeit für tsd nichts zu tun. – toskv
Sie haben Recht, toskv, ich kann einfach die d.ts-Datei kopieren, ohne sie in typings/tsd.d.ts referenzieren zu müssen. Ich habe ein Problem festgestellt, wenn ich die exports-Variable gesetzt habe. Ich habe meinen Post mit weiteren Informationen aktualisiert. – Simon