Skip to content

Instantly share code, notes, and snippets.

@galkin
Last active March 24, 2018 16:46
Show Gist options
  • Save galkin/9b54683ec251d77b26fa4c7feec46df2 to your computer and use it in GitHub Desktop.
Save galkin/9b54683ec251d77b26fa4c7feec46df2 to your computer and use it in GitHub Desktop.
Skip broken eslint rules

Usage

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

Precondition:

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