發布TS類型文件到npm


最近發布了@types/node-observer包到npm,這里記錄下發布過程

TS類型文件的包名通常以@types開頭,使用npm publish發布以@types開頭的包時需要使用付費賬號。

 

我們無需自己注冊付費賬號,可以將自己的代碼merge到開源項目DefinitelyTyped中,然后發布到npm上。

DefinitelyTyped

fork倉庫DefinitelyTyped,拉取到本地(項目比較大,拉下來比較耗時)添加自己的代碼、提交,然后創建Pull requests。勾選Pull requests模板中的選項:

 

 

發起Pull requests,會走一個CI流程,這個階段耗費時間比較長,不知道是不是因為有牆的原因。期間出現幾個錯誤記錄記錄如下:

index.d.ts頭部解析錯誤

index.d.ts頭部模板可參考:dt-header。這里出現兩個錯誤:

Error: Could not parse version: line is '// TypeScript Version: 3.3.3'

Error parsing header. Expected: foo MAJOR.MINOR (patch version not allowed). See: https://github.com/Microsoft/dtslint/blob/master/docs/dt-header.md

這兩個錯誤屬於同一類,注釋中只能使用主版本號.次版本號不能使用補丁版本號。修改后如下:

 

文件格式錯誤

.d.ts和.ts文件末尾要空一行

 
 

代碼錯誤

export = observer;等號兩邊要有空格:

 
 

const obj = new Demo();這一行最初寫的是let obj = new Demo();,報ERROR: 9:5 prefer-const Identifier 'obj' is never reassigned; use 'const' instead of 'let'.錯誤。
類定義Demo的方法sayHello不能使用public修飾符,否則報ERROR: 4:5 member-access 'public' is implicit.錯誤。

 
消除所有錯誤后,會交由人工處理 merge,完成 merge后就會發布到npm了。
 

小結

以上是自己合並代碼到主分支時遇到的錯誤,解決問題花費時間不算太長,倒是花費了大量時間等待CI結果。整體感覺,CI流程對文件內容的格式要求很嚴格。代碼的提交、合並的詳細流程可以點擊此處查看:#40450,所有的構建歷史記錄可以在此處查看

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM