Merge pull request #9389 from backstage/rugvip/lint

cli: tweak lint rules and switch ESLint invocation method
This commit is contained in:
Ben Lambert
2022-02-07 15:09:28 +01:00
committed by GitHub
5 changed files with 41 additions and 39 deletions
+1 -12
View File
@@ -54,11 +54,10 @@ module.exports = {
'no-console': 0, // Permitted in console programs
'new-cap': ['error', { capIsNew: false }], // Because Express constructs things e.g. like 'const r = express.Router()'
'import/newline-after-import': 'error',
'import/no-duplicates': 'warn',
'import/no-extraneous-dependencies': [
'error',
{
devDependencies: false,
devDependencies: ['**/*.test.*', 'src/setupTests.*', 'dev/**'],
optionalDependencies: true,
peerDependencies: true,
bundledDependencies: true,
@@ -97,16 +96,6 @@ module.exports = {
{
files: ['*.test.*', 'src/setupTests.*', 'dev/**'],
rules: {
// Tests are allowed to import dev dependencies
'import/no-extraneous-dependencies': [
'error',
{
devDependencies: true,
optionalDependencies: true,
peerDependencies: true,
bundledDependencies: true,
},
],
'no-restricted-syntax': ['error', ...globalRestrictedSyntax],
},
},
+6 -17
View File
@@ -49,11 +49,15 @@ module.exports = {
'@typescript-eslint/no-redeclare': 'error',
'no-undef': 'off',
'import/newline-after-import': 'error',
'import/no-duplicates': 'warn',
'import/no-extraneous-dependencies': [
'error',
{
devDependencies: false,
devDependencies: [
'**/*.test.*',
'**/*.stories.*',
'src/setupTests.*',
'dev/**',
],
optionalDependencies: true,
peerDependencies: true,
bundledDependencies: true,
@@ -101,20 +105,5 @@ module.exports = {
'no-undef': 'off',
},
},
{
files: ['*.test.*', '*.stories.*', 'src/setupTests.*', 'dev/**'],
rules: {
// Tests are allowed to import dev dependencies
'import/no-extraneous-dependencies': [
'error',
{
devDependencies: true,
optionalDependencies: true,
peerDependencies: true,
bundledDependencies: true,
},
],
},
},
],
};
+20 -10
View File
@@ -15,19 +15,29 @@
*/
import { Command } from 'commander';
import { run } from '../lib/run';
import { paths } from '../lib/paths';
import { ESLint } from 'eslint';
export default async (cmd: Command) => {
const eslint = new ESLint({
cwd: paths.targetDir,
fix: cmd.fix,
extensions: ['js', 'jsx', 'ts', 'tsx', 'mjs', 'cjs'],
});
const results = await eslint.lintFiles(['.']);
export default async (cmd: Command, cmdArgs: string[]) => {
const args = [
'--ext=js,jsx,ts,tsx,mjs,cjs',
'--max-warnings=0',
`--format=${cmd.format}`,
...(cmdArgs ?? [paths.targetDir]),
];
if (cmd.fix) {
args.push('--fix');
await ESLint.outputFixes(results);
}
await run('eslint', args);
const formatter = await eslint.loadFormatter(cmd.format);
const resultText = formatter.format(results);
// If there is any feedback at all, we treat it as a lint failure. This should be
// consistent with our old behavior of passing `--max-warnings=0` when invoking eslint.
if (resultText) {
console.log(resultText);
process.exit(1);
}
};