fix(tools): stop multiple prettier runs on large commits (#44124)
This commit is contained in:
committed by
GitHub
parent
cb373132cb
commit
0a5c7cbfcf
@ -2,31 +2,52 @@ const { ESLint } = require('eslint');
|
|||||||
|
|
||||||
const cli = new ESLint();
|
const cli = new ESLint();
|
||||||
|
|
||||||
|
// This lets us abort if we've already run a stage for all files
|
||||||
|
const completedStages = new Set();
|
||||||
|
|
||||||
// if a lot of files are changed, it's faster to run prettier/eslint on the
|
// if a lot of files are changed, it's faster to run prettier/eslint on the
|
||||||
// whole project than to run them on each file separately
|
// whole project than to run them on each file separately
|
||||||
module.exports = {
|
module.exports = {
|
||||||
'*.(js|ts|tsx)': async files => {
|
'*.(js|ts|tsx)': async files => {
|
||||||
|
if (completedStages.has('js')) return [];
|
||||||
|
|
||||||
const ignoredIds = await Promise.all(
|
const ignoredIds = await Promise.all(
|
||||||
files.map(file => cli.isPathIgnored(file))
|
files.map(file => cli.isPathIgnored(file))
|
||||||
);
|
);
|
||||||
const lintableFiles = files.filter((_, i) => !ignoredIds[i]);
|
const lintableFiles = files.filter((_, i) => !ignoredIds[i]);
|
||||||
return files.length > 10
|
if (files.length > 10) {
|
||||||
? ['eslint --max-warnings=0 --cache --fix .', 'prettier --write .']
|
completedStages.add('js');
|
||||||
: [
|
return ['eslint --max-warnings=0 --cache --fix .', 'prettier --write .'];
|
||||||
'eslint --max-warnings=0 --cache --fix ' + lintableFiles.join(' '),
|
} else {
|
||||||
...files.map(filename => `prettier --write '${filename}'`)
|
return [
|
||||||
];
|
'eslint --max-warnings=0 --cache --fix ' + lintableFiles.join(' '),
|
||||||
|
...files.map(filename => `prettier --write '${filename}'`)
|
||||||
|
];
|
||||||
|
}
|
||||||
},
|
},
|
||||||
'*.!(js|ts|tsx)': files =>
|
'*.!(js|ts|tsx)': files => {
|
||||||
files.length > 10
|
if (completedStages.has('not-js')) return [];
|
||||||
? 'prettier --write .'
|
|
||||||
: files.map(
|
if (files.length > 10) {
|
||||||
filename => `prettier --write --ignore-unknown '${filename}'`
|
completedStages.add('not-js');
|
||||||
),
|
return 'prettier --write .';
|
||||||
'./curriculum/challenges/**/*.md': files =>
|
} else {
|
||||||
files.length > 10
|
return files.map(
|
||||||
? 'npm run lint:challenges'
|
filename => `prettier --write --ignore-unknown '${filename}'`
|
||||||
: files.map(
|
);
|
||||||
filename => `node ./tools/scripts/lint/index.js '${filename}'`
|
}
|
||||||
)
|
},
|
||||||
|
|
||||||
|
'./curriculum/challenges/**/*.md': files => {
|
||||||
|
if (completedStages.has('markdown')) return [];
|
||||||
|
|
||||||
|
if (files.length > 10) {
|
||||||
|
completedStages.add('markdown');
|
||||||
|
return 'npm run lint:challenges';
|
||||||
|
} else {
|
||||||
|
return files.map(
|
||||||
|
filename => `node ./tools/scripts/lint/index.js '${filename}'`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user