簡體   English   中英

有沒有辦法只在新文件上運行 lint-staged(之前 git 未跟蹤的文件)

[英]Is there a way to run lint-staged only on new files (the ones that were untracked by git before)

在我用 Typescript 編寫的項目中,我想開始對所有函數的返回類型和參數類型強制執行類型注釋。 為此,我創建了一個單獨的 tslint 配置,它擴展了我的主配置,並在此之上添加了這個規則。 我正在通過 husky 運行 tslint,並使用此擴展配置進行 lint-staged,以在提交更改之前檢查所有暫存文件。 問題是:如果我對其中一個舊文件(其中一些非常大)進行更改,lint staged 也會檢查這個文件,除非我對所有文件中的所有函數進行類型注釋,否則不會讓我提交。 但這是很多工作,我只想對新文件強制執行此操作。 有沒有辦法將暫存文件過濾到僅在此提交中添加的文件?

皮棉上演利用另一個名為庫的上演,混帳文件 (SGF)用於檢索的文件列表中上演了git的承諾之前。

這是sgf使用的一些狀態代碼。

  • 添加(A)
  • 復制(C)
  • 已刪除(D)
  • 修改(M)
  • 重命名(R)

lint-staged將狀態代碼ACM傳遞給sgf軟件包。

 sgf.cwd = gitDir
  *return pify(sgf)('ACM').then(files => {*
    /* files is an Object{ filename: String, status: String } */
    const filenames = files.map(file => file.filename)

如果您希望僅在lint-staged上檢索添加的文件,則可以分叉存儲庫並將AC傳遞給sgf。 如果我們有一種配置方法,那將是理想的。 我在回購中提出了一個問題 我希望他們能解決

如果使用目錄結構將“新”代碼與“舊”代碼分開,則可以執行此操作。 在那之后,在lint階段的配置中只有2種不同的glob模式。

這是我可以想到的最簡單的方法,它可以與其他代碼質量工具(例如ESLint)一起使用,因為您可以將.eslintrc放入子目錄中。

從 lint-staged 版本 12.5.0 開始,您可以使用--diff-filter標志和 @Deadfish 之前寫的參數。

來自lint-staged文檔:

--diff-filter:默認情況下,僅包含添加、復制、修改或重命名的文件。 使用此標志以其他內容覆蓋默認 ACMR 值:添加 (A)、復制 (C)、刪除 (D)、修改 (M)、重命名 (R)、類型更改 (T)、未合並 (U)、未知(X),或配對損壞 (B)。

在您的 package.json 文件中將是這樣的:

"scripts": {
    "lint:staged": "lint-staged --diff-filter=A"
}

此處發布說明: v0.12.5

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM