TypeScript 之 聲明文件的發布
阿新 • • 發佈:2018-08-30
聲明 假設 file extension 1.0 reference and npm pub
https://www.tslang.cn/docs/handbook/declaration-files/publishing.html
- 發布聲明文件到npm,有兩種方式:
- 與你的npm包捆綁在一起(推薦)
- 發布到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"屬性指定了。
- 依賴
所有的依賴是由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 types="..." />
代替。- 打包所依賴的聲明
如果你的類型聲明依賴於另一個包:
- 不要把依賴的包放進你的包裏,保持它們在各自的文件裏。
- 不要將聲明拷貝到你的包裏。
- 應該依賴於npm類型聲明包,如果依賴包沒包含它自己的聲明的話。
TypeScript 之 聲明文件的發布