使用TSLINT檢查打字稿項目中包裝和文件夾之間的無效導入。
包裝架構的自動驗證和文檔(通過tslint-folders-diagrams )。
tslint-folders穩定,每天在CI構建和開發框(Linux,Mac,Windows)中使用至少一種主要產品。
節省時間手動編碼“愚蠢”錯誤的時間,例如:
file-name-casing僅允許1個樣式) 我們使用SEMVER進行版本控制。有關可用版本,請參見發行版。
yarn add tslint-folders
編輯您的tslint.json以具有指向tslint-folders的條目"rulesDirectory" 。
通常這就像:
"rulesDirectory": "./node_modules/tslint-folders/dist/lib/"
有關示例,請參見tslint.tslint-folders.json。
TSLINT規則是在tslint.json中啟用和配置的。
請參閱tslint.tslint-folders.json或單位測試中的tsf-folders-imports-between-packages下的部分。
可選地,您可以將tslint-folders配置分為單獨的文件,例如tslint.tslint-folders.json 。要引用文件,請將此代碼添加到tslint.json :
"extends": "./tslint.tslint-folders.json"
假設TSLINT已經到位,那麼您現在應該看到TSLINT標記任何意外的導入(或禁用測試)。對於TSLINT,這應該像往常一樣工作:在命令行,或在諸如視覺代碼之類的編輯中(可能需要刷新編輯器)。
請參閱tslint-folders-diagrams
圖可以自動從用於驗證代碼的同一配置中生成:

有關詳細信息,請參見tslint-folders-diagram。
這是當前自定義規則的摘要。
| 規則ID | 描述 |
|---|---|
| tsf-folders-Disabled測試 | 檢測殘疾單位測試,測試套件或集成測試。 |
| TSF折疊式文件名 | 驗證文件名的外殼。類似於標準規則file-name-casing除了它支持多個允許的套管,並用無效的字符(例如空格或逗號)刪除文件名。 |
| tsf折線 - 派往折疊式食客 | 從Node_modules等非標准文件夾中檢測導入 |
| TSF - 折線 - Imports-bete-bettepages | 從“高級”軟件包中檢測導入:例如,在“區域”軟件包內部從應用程序“ Shell”軟件包導入。這是主要的自定義規則。還可以檢測使用此軟件包名稱(而不是相對路徑)的軟件包何時具有導入。 |
| tsf-folders測試與破壞點 | 檢測集成測試何時具有browser.debug()之類的突破點 |
| 地點 | URL |
|---|---|
| 源代碼(github) | https://github.com/mrseanryan/tslint-folders |
| Github頁面 | https://mrseanryan.github.io/tslint-folders/ |
| NPM | https://www.npmjs.com/package/tslint-folders |
所有規則都使用相同的前綴tsf-folders- - 。
為了向開發人員清楚地表明涉及自定義規則,所有規則中的所有消息還包括規則ID。
這些規則中的一些可以用標準TSLINT配置代替。但是,擁有自定義規則會提供更清晰的消息,以幫助開發人員知道要修復的內容(或該代碼禁用哪些規則)。
某些規則並不嚴格與“文件夾”有關,但在此包含在其中,因為它們似乎也有用。
有關更多詳細信息和示例,請參閱單元測試
要處理tslint-folders的源代碼,有一些腳本:
| 命令 | 描述 |
|---|---|
| 紗線構建 | 將規則構建到可以執行的“ DIST”文件夾中的規則。 |
| 紗線 | 絨毛是規則的源代碼。 |
| 紗線開始 | 構建,測試和覆蓋代碼。 |
| 紗線測試 | 根據規格文件測試規則(*.lint) |
| 紗線測試 | 測試針對規格文件的單個規則(*.lint) |
規則tsf-folders-imports-between-packages的單位測試在這裡。
單元測試使用測試數據檢查一個相當典型的網站的包裝邊界。
可以在tslint.tslint-folders.json中看到匹配配置
測試數據基於使用多個軟件包的網站:
| 軟件包名稱 | 描述 |
|---|---|
| 殼 | 應用程序外殼 - 這是頂級軟件包,它可以從任何其他軟件包中導入。 |
| 待辦事項 | 網站的“待辦事項應用程序”區域,該區域託管在外殼內。它不應從外殼或其他“區域”軟件包中導入。 |
| 待辦事項 | 網站的“聯繫信息”區域,該區域託管在外殼內。它不應從外殼或其他“區域”軟件包中導入。 |
| 網格包裝 | 由區域包裝使用的UI網格。它不應導入任何其他公認的軟件包。 |
| UTILS | 外殼和區域軟件包使用的“ UTILS”軟件包。它不應導入任何其他公認的軟件包。 |
示例驗證:“ Shell”應該能夠從“ todo-Area”中導入,但反之亦然(Shell處於較高的抽像水平,並且還希望避免2向依賴關係)。
TSLINT-FOLDERS還可以驗證軟件包的子折疊器之間的進口。
測試數據“ Todo-Area”軟件包配置了相當典型的子文件夾,例如“組件”和“模型”。 tslint.tslint-folders.json已配置為檢查這些文件夾之間的導入。
| 子文件夾名稱 | 描述 |
|---|---|
| 成分 | UI組件的頂級文件夾。可以從任何其他公認的文件夾中導入。 |
| ViewModels | UI組件使用的視圖模型文件夾。只能從模型或utils導入。 |
| 型號 | 視圖模型使用的模型文件夾。只能從utils進口。 |
| UTILS | 一個“ utils”文件夾。它不應導入任何其他公認的文件夾。 |
示例驗證:“組件”應該能夠從“模型”中導入,而不是相反(組件處於較高的抽像水平,並且還希望避免2向依賴關係)。
請參閱貢獻讀數。
該項目基於出色的SEEDER Project Project-Library-Starter。
該項目開始避免在大型打字條代碼庫中反復修复類似的編碼問題。
請參閱此處
就是這樣。讓我知道這是否有用或如何改進!
肖恩·瑞安(Sean Ryan)的原始作品-Sean.ryan先生(在gmail.com上)
該項目是根據MIT許可證獲得許可的 - 有關詳細信息,請參見許可證文件