TypeScript 之 声明文件的发布

  • https://www.tslang.cn/docs/handbook/declaration-files/publishing.htmlhtml

  • 发布声明文件到npm,有两种方式:
  1. 与你的npm包捆绑在一块儿(推荐)
  2. 发布到npm上的@types organization。
  • 包含声明文件到你的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"属性指定了。typescript

  • 依赖
    全部的依赖是由npm管理的。 确保所依赖的声明包都在 package.json的"dependencies"里指明了 好比,假设咱们写了一个包它依赖于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,它把声明文件放在了npm包里,所以咱们不须要依赖额外的包。
咱们的包要从这两个包里得到声明文件,所以browserify-typescript-extension的用户也须要这些依赖。 正所以,咱们使用 "dependencies"而不是"devDependencies",不然用户将须要手动安装那些包。 若是咱们只是在写一个命令行应用,而且咱们的包不会被当作一个库使用的话,那么就可使用 devDependencies。npm

  • 不要在声明文件里使用/// <reference path="..." />,应该使用/// <reference types="..." />代替。json

  • 打包所依赖的声明
    若是你的类型声明依赖于另外一个包:
  1. 不要把依赖的包放进你的包里,保持它们在各自的文件里。
  2. 不要将声明拷贝到你的包里。
  3. 应该依赖于npm类型声明包,若是依赖包没包含它本身的声明的话。
相关文章
相关标签/搜索