W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
現(xiàn)在我們已經(jīng)按照指南里的步驟寫(xiě)好一個(gè)聲明文件,是時(shí)候把它發(fā)布到npm了。 有兩種主要方式用來(lái)發(fā)布聲明文件到npm:
如果你能控制要使用你發(fā)布的聲明文件的那個(gè)npm包的話,推薦第一種方式。 這樣的話,你的聲明文件與JavaScript總是在一起傳遞。
如果你的包有一個(gè)主.js
文件,你還是需要在package.json
里指定主聲明文件。 設(shè)置 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"
里指明了 比如,假設(shè)我們寫(xiě)了一個(gè)包它依賴于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
沒(méi)有把它的聲明文件捆綁在它的npm包里,所以我們需要依賴于@types/browserify
得到它的聲明文件。 typescript
相反,它把聲明文件放在了npm包里,因此我們不需要依賴額外的包。
我們的包要從這兩個(gè)包里暴露出聲明文件,因此browserify-typescript-extension
的用戶也需要這些依賴。 正因此,我們使用 "dependencies"
而不是"devDependencies"
,否則用戶將需要手動(dòng)安裝那些包。 如果我們只是在寫(xiě)一個(gè)命令行應(yīng)用,并且我們的包不會(huì)被當(dāng)做一個(gè)庫(kù)使用的話,那么我就可以使用devDependencies
。
/// <reference path="..." />
不要在聲明文件里使用/// <reference path="..." />
。
/// <reference path="../typescript/lib/typescriptServices.d.ts" />
....
應(yīng)該使用/// <reference types="..." />
代替
/// <reference types="typescript" />
....
務(wù)必閱讀[使用依賴](./Library Structures.md#consuming-dependencies)一節(jié)了解詳情。
如果你的類型聲明依賴于另一個(gè)包:
在發(fā)布聲明文件包之后,確保在DefinitelyTyped外部包列表里面添加一條引用。 這可以讓查找工具知道你的包提供了自己的聲明文件。
@types下面的包是從DefinitelyTyped里自動(dòng)發(fā)布的,通過(guò) types-publisher工具。 如果想讓你的包發(fā)布為@types包,提交一個(gè)pull request到https://github.com/DefinitelyTyped/DefinitelyTyped。 在這里查看詳細(xì)信息contribution guidelines page。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: