如果自上次 运行 以来没有任何变化,TSLint 是否有阻止 运行ning 的选项?

Does TSLint have an option to prevent running if nothing has changed since previous run?

我办公室有一个令人讨厌的 TSLint 规则集,lint 我们的项目需要超过 15 分钟的时间。

如果我执行 lint,我能否确保下一个通常会触发 lint 的命令在没有任何变化的情况下不执行?

即使是最小的、微不足道的更改也会造成巨大的延迟。这并不是说它具有攻击性,而是它在构建之间没有持久层来理解 Typscript 生态系统中的任何内容都没有改变,因此,没有必要重新检查整个项目。

如果可能的话,仅对更改的文件进行 lint 也将是有益的。

这是我们的TSLint.json,如果对您有帮助;

{
"rulesDirectory": [
    "node_modules/codelyzer"
],
"rules": {
    "no-unused-variable": true,
    "callable-types": true,
    "class-name": true,
    "comment-format": [
    true,
    "check-space"
    ],
    "curly": true,
    "eofline": true,
    "forin": true,
    "import-blacklist": [true, "rxjs"],
    "import-spacing": true,
    "indent": [
    true,
    "spaces",
    4
    ],
    "interface-over-type-literal": true,
    "label-position": true,
    "max-line-length": [
    true,
    160
    ],
    "member-access": false,
    "member-ordering": [
    true,
    "static-before-instance",
    "variables-before-functions"
    ],
    "no-arg": true,
    "no-bitwise": true,
    "no-console": [
    true,
    "debug",
    "info",
    "time",
    "timeEnd",
    "trace"
    ],
    "no-construct": true,
    "no-debugger": true,
    "no-duplicate-variable": true,
    "no-empty": false,
    "no-empty-interface": true,
    "no-eval": true,
    "no-inferrable-types": [false, "ignore-params"],
    "no-shadowed-variable": true,
    "no-string-literal": false,
    "no-string-throw": true,
    "no-switch-case-fall-through": true,
    "no-trailing-whitespace": true,
    "no-unused-expression": true,
    "no-use-before-declare": true,
    "no-var-keyword": true,
    "object-literal-sort-keys": false,
    "ordered-imports": false,
    "one-line": [
    true,
    "check-open-brace",
    "check-catch",
    "check-else",
    "check-whitespace"
    ],
    "prefer-const": true,
    "quotemark": [
    true,
    "single",
    "avoid-escape"
    ],
    "radix": true,
    "semicolon": [
    "always"
    ],
    "triple-equals": [
    true,
    "allow-null-check"
    ],
    "typedef-whitespace": [
    true,
    {
        "call-signature": "nospace",
        "index-signature": "nospace",
        "parameter": "nospace",
        "property-declaration": "nospace",
        "variable-declaration": "nospace"
    }
    ],
    "typeof-compare": true,
    "unified-signatures": true,
    "variable-name": false,
    "whitespace": [
    true,
    "check-branch",
    "check-decl",
    "check-operator",
    "check-separator",
    "check-type"
    ],

    "directive-selector": [true, "attribute", "", "camelCase"],
    "component-selector": [true, "element", "", "kebab-case"],
    "use-input-property-decorator": true,
    "use-output-property-decorator": true,
    "use-host-property-decorator": true,
    "no-input-rename": true,
    "no-output-rename": true,
    "use-life-cycle-interface": true,
    "use-pipe-transform-interface": true,
    "component-class-suffix": true,
    "directive-class-suffix": true,
    "no-access-missing-member": true,
    "templates-use-public": true,
    "invoke-injectable": true
},
"defaultSeverity": "warning"
}

不幸的是没有,截至 2018 年,TSLint 中没有这样的功能。 https://github.com/palantir/tslint/issues/3155 and https://github.com/palantir/tslint/issues/1141 在允许的 TSLint 中跟踪工作。