2016-02-26 1 views
0

J'essaye de include a .d.ts file in my npm package pour my (non-TypeScript) library.Comment distribuer le fichier .d.ts dans le paquet npm

je suit dans mon package.json:

"typings": "./src/iter.d.ts", 

Mais peu importe ce que je mets en ./src/iter.d.ts, chaque fois que j'essaie de l'utiliser dans Visual Studio, je reçois toujours un « Vous ne trouvez pas le module « iterjs » » message.

Pour reproduire, créer une nouvelle application dans VS tapuscrit (j'utilise 2015 TS 1.8.4), faire une npm install iterjs, et ajouter ce qui suit à app.ts:

import iter from 'iterjs'; 

J'ai essayé de modifier la copie locale de iter.d.ts (sous node_modules) dans une tentative désespérée pour obtenir quoi que ce soit qui fonctionne du tout; ma copie locale ne dispose actuellement que le contenu suivant:

export declare function bob(object: Object, property: string): boolean; 
export default bob; 

je peux vérifier que Visual Studio est de trouver et de lire le fichier iter.d.ts (je peux le voir en cours de lecture dans Process Monitor chaque fois que VS ouvre app.ts); cependant, il y a quelque chose dans le fichier .d.ts qu'il n'aime pas. J'ai lu environ une douzaine de billets de blog, parcouru le Handbook, et une demi-douzaine de questions de TypeScript sur le sujet, et j'ai essayé environ 20 façons différentes d'exporter du fichier .d.ts, mais VS donne toujours la même erreur (Impossible de trouver le module 'iterjs').

Répondre

1

La résolution de type nœud .d.ts dans les packages NPM ne fonctionne que pour les définitions de type au format de module externe approprié. Le .d.ts dans votre référentiel est dans le format de module ambiant, pour le convertir au format correct supprimer declare module "iter" et préfixer chaque symbole que vous souhaitez exporter avec export declare, oh, et remplacer export = iter par export default iter. Vous pouvez trouver des informations supplémentaires au https://github.com/Microsoft/TypeScript/wiki/Typings-for-npm-packages

+0

J'ai essayé cela, mais j'ai toujours la même erreur. Mon fichier 'iter.d.ts' actuel dans' node_modules' a été modifié pour n'avoir qu'une seule fonction '' exporter déclarer la fonction bob ... '' et 'exporter default bob'. –

+1

J'ai installé votre paquet de NPM et ai essayé de l'importer, j'utilise VSCode qui s'est plaint que le '.d.ts' n'est pas un module, et quand j'ai essayé de construire avec' tsc' cela a fonctionné sans plainte. Cela m'a laissé confus, alors j'ai essayé de trouver une différence entre d'autres types de paquets NPM qui fonctionnaient dans VSCode et les autres, la seule différence que je pouvais voir était que votre fichier .d.ts avait une nomenclature UTF8 tandis que l'autre 'd.ts' ne l'a pas fait, j'ai donc essayé de supprimer la nomenclature, j'ai redémarré VSCode et il ne s'est plus plaint de votre fichier' d.ts'. –

+1

@StephenCleary La chose vraiment étrange est que j'ai ensuite remis la nomenclature UTF8 dans votre '.d.ts' et j'ai redémarré VSCode à nouveau, et VSCode ne s'est pas plaint cette fois. –