如何将打字稿定义文件添加到 npm 包中?
Posted
技术标签:
【中文标题】如何将打字稿定义文件添加到 npm 包中?【英文标题】:How to add a typescript definition file to a npm package? 【发布时间】:2016-09-09 15:41:49 【问题描述】:有没有办法将打字稿定义(.d.ts
文件)直接添加到纯 javascript 项目中(例如在package.json
中)。我找不到任何相关文档。
【问题讨论】:
有趣的问题 :) 我会跟着。 【参考方案1】:TypeScript Handbook 中有一个页面介绍了向 NPM 包添加类型。我将复制并粘贴到这里:
NPM 包的类型
TypeScript 编译器通过遵循 Node.js 模块解析算法来解析 Node 模块名称。 TypeScript 还可以加载与 npm 包捆绑在一起的类型。编译器将尝试使用以下规则集发现模块“foo”的类型:
尝试加载位于相应包文件夹 (node_modules/foo/) 中的 package.json 文件。如果存在,请阅读“类型”字段中描述的类型文件的路径。例如,在以下 package.json 中,编译器将解析 node_modules/foo/lib/foo.d.ts 处的类型
"name": "foo",
"author": "Vandelay Industries",
"version": "1.0.0",
"main": "./lib/foo.js",
"typings": "./lib/foo.d.ts"
尝试加载位于包文件夹 (node_modules/foo/) 中的名为 index.d.ts 的文件 - 该文件应包含包的类型。
模块解析的精确算法可以在这里找到。
你的定义文件应该
be.d.ts 文件写成外部模块 不包含三斜杠引用
基本原理是打字不应该将新的可编译项带入已编译文件的集合中;否则,包中的实际实现文件可能会在编译期间被覆盖。此外,加载类型不应污染全局范围,因为从同一库的不同版本中引入可能存在冲突的条目。
【讨论】:
似乎应该是types
而不是typings
。
我回答问题时是typings
。这是archive。另外,从当前文档中:Note that the "typings" field is synonymous with "types", and could be used as well.
感谢您的背景故事。当前所有在线示例都使用types
。如果您还没有,请考虑更新您的答案。
很好的宋飞参考。
我没有将字段从“typings”更改为“types”,因为当前文档说它们是同义词。我们有另一个使用“类型”的答案。我更喜欢有两个都有效的不同答案,而不是两个被编辑为相同的答案。【参考方案2】:
Visual Studio 2015 将无法识别定义文件,除非您使用 package.json 中的 types
属性https://www.typescriptlang.org/docs/handbook/declaration-files/publishing.html
"name": "awesome",
"author": "Vandelay Industries",
"version": "1.0.0",
"main": "./lib/main.js",
"types": "./lib/main.d.ts"
*您必须在 ts 文件中使用三个斜杠来包含引用路径。/// <reference path="../node_modules/../lib/main.d.ts" />
对于其他登陆这里并希望将类型链接到他们的 npm 包的人,一个方便的 tutorial 可能会有所帮助!
【讨论】:
来自您提供的链接:Note that the "typings" field is synonymous with "types", and could be used as well.
以上是关于如何将打字稿定义文件添加到 npm 包中?的主要内容,如果未能解决你的问题,请参考以下文章