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