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類型聲明包,若是依賴包沒包含它本身的聲明的話。
相關文章
相關標籤/搜索