Reputation: 136
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
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