@lipemat/js-boilerplate
Version:
Dependencies and scripts for a no config JavaScript app
54 lines • 1.86 kB
JavaScript
import { ESLint } from 'eslint';
import minimist from 'minimist';
import chalk from 'chalk';
import { getPackageConfig } from '@lipemat/js-boilerplate-shared/helpers/package-config.js';
// Command line arguments.
const flags = minimist(process.argv.slice(2));
/**
* ESLint does not have a utility method for detecting if
* any error has occurred, nor does it set the exit code.
*
* We can use this function to determine if any error has
* occurred and set the exit code accordingly.
*/
function errorOccurred(results) {
return results.some(result => result.errorCount > 0 || result.warningCount > 0);
}
/**
* Use the public API to run the eslint commands.
*
* @link https://eslint.org/docs/developer-guide/nodejs-api
*/
(async function main() {
// 1. Create an instance with the `fix` and `cache` options.
const eslint = new ESLint({
fix: (flags.fix ?? true) !== 'false',
cache: true,
cacheStrategy: 'content',
});
console.debug(chalk.underline('Running "js-boilerplate:lint" (eslint) task'));
// 2. Lint files. This doesn't modify target files.
const results = await eslint.lintFiles([
getPackageConfig().workingDirectory + '/src/**/*.{js,jsx,ts,tsx,svelte}',
]);
// 3. Modify the files with the fixed code.
await ESLint.outputFixes(results);
// 4. Format the results.
const formatter = await eslint.loadFormatter('stylish');
const resultText = formatter.format(results);
// 5. Output it.
if ('' === resultText) {
console.debug(`>> Linted ${results.length} files without errors`);
}
else {
console.debug(resultText);
if (errorOccurred(results)) {
process.exitCode = 1;
}
}
console.debug('');
}()).catch(error => {
process.exitCode = 1;
console.error(error);
});
//# sourceMappingURL=lint.js.map