SurelyTheresABetterWay
SurelyTheresABetterWay

Reputation: 136

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

We have an obnoxious TSLint ruleset at my office, and it takes upwards of 15 minutes to lint our Project.

If I execute a lint, can I ensure that the next command that would normally trigger a lint, doesn't execute if nothing has changed?

It causes enormous delays in making even the smallest, trivial changes. It's not that it's aggressive, it's that it doesn't have a persistence layer between builds to understand that nothing in the Typscript ecosystem has changed, and therefore, there's no need to relint the entire project.

It would also be beneficial to lint only the changed files, if that is a possibility.

Here is our TSLint.json, if it helps;

{
"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"
}

Upvotes: 1

Views: 106

Answers (1)

Josh
Josh

Reputation: 3533

Unfortunately no, as of 2018 there is no such feature in TSLint. https://github.com/palantir/tslint/issues/3155 and https://github.com/palantir/tslint/issues/1141 track work in TSLint that would allow it.

Upvotes: 2

Related Questions