【问题标题】:Running TSLint only on changed files with Git Diff仅在使用 Git Diff 更改的文件上运行 TSLint
【发布时间】:2018-12-16 10:39:22
【问题描述】:

我只想在拉取请求中修改的文件上运行tslint,而不是整个项目。

git diff --name-only develop -- *.ts 成功打印出功能分支和开发之间已更改的文件名。

我正在尝试将该命令通过管道传输到我的 lint 命令中。 Lint 可以获取要运行的文件列表,而不是通过将文件名放在后面来运行所有文件:

git diff --name-only develop -- *.ts | npm run lint

这适用于我们的 Jenkins 机器,但在我的本地 Windows 机器上,没有文本附加到 lint 命令的末尾。

C:\code>git diff --name-only develop-- *.ts | npm 运行 lint

tslint -c .\tslint.json -p .\tsconfig.json

是否有一种简单的单行方法只对分支中更改的文件运行 lint?

【问题讨论】:

  • 如果你的问题是在 Unix 上,我建议xargs。我不知道 Windows 的等价物是什么。

标签: git tslint


【解决方案1】:

您可以使用 Git Bash 运行以下内容:

npm run lint $(git diff --name-only --diff-filter=ACMR origin/dev-123...develop -- *.ts)

【讨论】:

    【解决方案2】:

    我通过运行得到了修改文件的列表

    git diff --name-only --diff-filter=ACMR origin/dev-123...develop -- *.ts

    origin/dev-123 是源分支,develop 是目标。

    我将该命令的输出放入一个数组,然后针对文件数组运行 linter。

    【讨论】:

      【解决方案3】:

      你可以使用这个包在 diffs-only 上对 typescript 进行 lint:

      https://github.com/AtakamaLLC/lint-diffs
      

      pip install lint-diffs

      然后修改配置.lint-diffs 以包括:

      [tslint]
      extensions=.ts
      regex=(?P<err>[^ :]+) *(?P<file>[^:]+):(?P<line>\d+):
      command=tslint -c tslint.json -p tsconfig.json
      always_report=E
      

      这假定 ts-linter 的输出为 prose。如果您的配置文件使用自定义格式,则必须修改正则表达式以匹配。

      【讨论】:

        猜你喜欢
        • 2017-08-01
        • 2019-09-21
        • 2022-06-11
        • 1970-01-01
        • 2014-10-19
        • 2020-11-12
        • 2013-09-19
        • 1970-01-01
        • 2022-07-12
        相关资源
        最近更新 更多