W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
現在我們已經按照指南里的步驟寫好一個聲明文件,是時候把它發(fā)布到npm了。 有兩種主要方式用來發(fā)布聲明文件到npm:
如果你能控制要使用你發(fā)布的聲明文件的那個npm包的話,推薦第一種方式。 這樣的話,你的聲明文件與JavaScript總是在一起傳遞。
如果你的包有一個主.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管理的。 確保所依賴的聲明包都在 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
。
/// <reference path="..." />
不要在聲明文件里使用/// <reference path="..." />
。
/// <reference path="../typescript/lib/typescriptServices.d.ts" />
....
應該使用/// <reference types="..." />
代替
/// <reference types="typescript" />
....
務必閱讀[使用依賴](./Library Structures.md#consuming-dependencies)一節(jié)了解詳情。
如果你的類型聲明依賴于另一個包:
在發(fā)布聲明文件包之后,確保在DefinitelyTyped外部包列表里面添加一條引用。 這可以讓查找工具知道你的包提供了自己的聲明文件。
@types下面的包是從DefinitelyTyped里自動發(fā)布的,通過 types-publisher工具。 如果想讓你的包發(fā)布為@types包,提交一個pull request到https://github.com/DefinitelyTyped/DefinitelyTyped。 在這里查看詳細信息contribution guidelines page。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: