UNPKG

esnext-scripts

Version:

Opinionated ESNext application scripts and configurations

64 lines (55 loc) 1.73 kB
const { CLIEngine } = require('eslint'); const config = require('../etc/eslint.config'); /* Sample report { results: [ { filePath: '/something.js', messages: [], errorCount: 0, warningCount: 0, fixableErrorCount: 0, fixableWarningCount: 0 }, fixableWarningCount: 0 } ], errorCount: 0, warningCount: 0, fixableErrorCount: 0, fixableWarningCount: 0, usedDeprecatedRules: [ { ruleId: 'no-negated-in-lhs', replacedBy: [Array] } ] } */ exports.command = 'lint [--fix -f] [dir]'; exports.desc = 'start linting using pre-defined rules set.'; exports.builder = (yargs) => yargs .option('fix', { alias: 'f', type: 'boolean', description: 'automatically fix problems', }) .option('dir', { alias: 'd', type: 'string', description: 'directory to start linting (default: cwd)', }); /** * Execute `eslint` linting with default settings under current `cwd`.. * @param {String} [argv.dir] - directory to perform linting. * @param {Object} argv - `yargs` options. */ exports.handler = (argv) => { const dir = argv.dir || process.cwd(); const fix = argv.fix === true; const eslint = new CLIEngine({ fix, extensions: ['.js', '.jsx'], ...config, }); const report = eslint.executeOnFiles([dir]); const output = eslint.getFormatter('stylish')(report.results); if (output) console.log(output); // eslint-disable-line no-console if (fix) CLIEngine.outputFixes(report); const hasUnfixableError = output.errorCount > output.fixableErrorCount; const hasUnfixableWarning = output.warningCount > output.fixableWarningCount; if (hasUnfixableError || hasUnfixableWarning) { process.exitCode = 1; } };