1

在我用 Typescript 编写的项目中,我想开始为所有函数的返回类型和参数类型强制执行类型注释。为此,我创建了一个单独的 tslint 配置,它扩展了我的主配置,并在此之上添加了这个规则。我正在通过 husky 运行 tslint,并使用此扩展配置进行 lint-staged,以在提交更改之前检查所有暂存文件。问题是:如果我对其中一个旧文件(其中一些非常大)进行更改,lint staged 也会检查这个文件,除非我对所有文件中的所有函数进行类型注释,否则不会让我提交。但这是很多工作,我只想对新文件强制执行此操作。有没有办法将暂存文件过滤到仅在此提交中添加的文件?

4

2 回答 2

2

lint-staged使用另一个名为staged-git-files (sgf) 的库来检索在git 提交之前暂存的文件列表。

以下是 sgf 使用的一些状态代码。

  • 添加(一)
  • 复制 (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。如果我们有一种配置方法,那将是理想的。我在回购中提出了一个问题。我希望他们解决这个问题

于 2019-05-10T15:01:06.080 回答
0

如果您使用目录结构将“新”代码与“旧”代码分开,则可以这样做。在那之后,您的 lint-staged 配置中只有 2 种不同的 glob 模式。

这是我能想到的最简单的方法,而且这与 ESLint 等其他代码质量工具配合得很好,因为您可以将.eslintrc其放入子目录中。

于 2019-02-28T09:17:35.593 回答