Publishing
出版
现在您已经按照本指南的步骤撰写了一个声明文件,现在是发布到npm的时候了。有两种主要的方式可以将您的声明文件发布到npm:
- 与你的npm软件包捆绑在一起,或者
2. 在npm上发布到@types组织。
如果你控制npm包你发布声明,那么第一种方法是有利的。这样,你的声明和JavaScript总是一起旅行。
在你的npm包中包含声明
如果你的软件包有一个主.js
文件,你也需要在你的package.json
文件中指明主要的声明文件。将该types
属性设置为指向您的捆绑声明文件。例如:
{
"name": "awesome",
"author": "Vandelay Industries",
"version": "1.0.0",
"main": "./lib/main.js",
"types": "./lib/main.d.ts"
}
请注意,"typings"
字段是同义词"types"
,也可以使用。
另请注意,如果您的主声明文件已命名index.d.ts
并位于包的根目录(旁边index.js
),则不需要标记该"types"
属性,但建议这样做。
依赖
所有依赖关系都由npm管理。确保你所依赖的所有声明包"dependencies"
在你的部分都有相应的标记package.json
。例如,假设我们创作了使用Browserify和TypeScript的包。
{
"name": "browserify-typescript-extension",
"author": "Vandelay Industries",
"version": "1.0.0",
"main": "./lib/main.js",
"types": "./lib/main.d.ts",
"dependencies": {
"browserify": "latest",
"@types/browserify": "latest",
"typescript": "next"
}
}
在这里,我们的软件包取决于browserify
和typescript
软件包。browserify
不会将其声明文件与其npm包捆绑在一起,所以我们需要依赖@types/browserify
它的声明。typescript
另一方面,打包它的声明文件,所以不需要任何额外的依赖关系
我们的软件包公开了来自每个软件包的声明,因此我们browserify-typescript-extension
软件包的任何用户也需要具备这些相关性。出于这个原因,我们使用了,"dependencies"
而不是"devDependencies"
,因为否则我们的消费者将需要手动安装这些包。如果我们刚刚编写了一个命令行应用程序,并且不希望我们的软件包被用作库,那么我们可能会使用它devDependencies
。
红旗
/// <reference path="..." />
不要用/// <reference path="..." />你的声明文件。
/// <reference path="../typescript/lib/typescriptServices.d.ts" />
....
不要使用/// <reference types="..." />来代替。
/// <reference types="typescript" />
....
请确保重新访问Consuming dependencies部分以获取更多信息。
打包依赖声明
如果你的类型定义依赖于另一个包:
不要
将它与你的文件结合起来,将它们保存在自己的文件中。
不要
将声明复制到你的包中。
不要
依赖于NPM类型声明包,如果它不打包的声明文件。
发布到@types
@types组织下的软件包使用types-publisher工具从DefinitelyTyped自动发布。要将您的声明发布为@types包,请向https://github.com/DefinitelyTyped/DefinitelyTyped提交拉取请求。您可以在贡献指南页面找到更多详细信息。