Skip to content

Instantly share code, notes, and snippets.

@galkin
Last active May 25, 2019 13:48
Show Gist options
  • Save galkin/bec2faf61e5994488f691ada68441283 to your computer and use it in GitHub Desktop.
Save galkin/bec2faf61e5994488f691ada68441283 to your computer and use it in GitHub Desktop.
Skip broken tslint rules

Usage

Pass the URL for this gist to npx in the project folder

Precondition:

  • tslint is installed
  • tslint.json exist
  • tsconfig.json exist
#!/usr/bin/env node
const { exec } = require('child_process');
const { writeFile, readFileSync } = require('fs');
const { join } = require('path');
const tslintPath = join(process.cwd(), 'tslint.json');
const tslint = JSON.parse(readFileSync(tslintPath));
exec('./node_modules/.bin/tslint --project tsconfig.json --format json', { maxBuffer: 20 * 1024 * 1024 }, (error, stdout, stderr) => {
const result = JSON.parse(stdout);
const brokenRules = result.reduce((rules, message) => {
if (rules[message.ruleName]) {
rules[message.ruleName] += 1;
} else {
rules[message.ruleName] = 1;
}
return rules;
}, {});
Object.keys(brokenRules)
.sort((r1,r2) => brokenRules[r1] - brokenRules[r2])
.forEach(rule => {
tslint.rules[rule] = false;
});
writeFile(tslintPath, JSON.stringify(tslint, null, 2), (err) => {
if (err) return console.error(err);
console.log(`Done! Changed ${Object.keys(brokenRules).length} rules`);
});
});
{
"name": "@galkin/tslint-rule-skipper",
"version":"0.1.0",
"private": true,
"bin": "./index.js"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment